洛谷P2814 家谱(c嘎嘎)

题目链接:P2814 家谱 - 洛谷 | 计算机科学教育新生态

题目难度:普及/提高

解题心得 :这道题用了并查集 (貌似不怎么常用的字符串并查集),用STL 中的map将子孙和祖先连接起来,第一次接触这种做法感觉很妙,发篇题解记录下。。。。

代码部分:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;	
#define _for(i,a,b) for(int i=(a); i<(b); i++)
#define _rep(i,a,b) for(int i=(a); i<=(b); i++)
typedef long long ll;
const int N = 1e5 + 10;
map<string,string>p; 
string s,t;

string find(string x)
{
	if(x != p[x]) p[x] = find(p[x]);
	return p[x];
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr),cout.tie(nullptr);
	
     char ch;
     cin >> ch;
     
     while(ch != '$')
	 {
	 	cin >> s;
	 	if(ch == '#')
	 	{
	 		t = s;
	 		if(p[s] == "") p[s] = s;
		}
		else if(ch == '+')
		{
			p[s] = t;
		}
		else 
	    	cout<<s<<' '<<find(s)<<'\n';
	    cin >> ch;
	 } 
    
	
    return 0;
}
相关推荐
黑不拉几的小白兔30 分钟前
第十五届蓝桥杯大赛软件赛国赛Python 大学 C 组试做【本期题单: 设置密码、栈】
c语言·python·蓝桥杯
无垠的广袤1 小时前
WDS 无线桥接
c++·单片机·嵌入式硬件·物联网·智能路由器
苏荷水1 小时前
day12 leetcode-hot100-19(矩阵2)
算法·leetcode·矩阵
之之为知知1 小时前
数学笔记三:特殊矩阵
笔记·学习·线性代数·算法·职场和发展·矩阵·职场发展
苏荷水1 小时前
day12 leetcode-hot100-20(矩阵3)
算法·leetcode·矩阵
全栈凯哥1 小时前
Java详解LeetCode 热题 100(21):LeetCode 240. 搜索二维矩阵 II(Search a 2D Matrix II)详解
java·算法·leetcode
武子康2 小时前
大数据-273 Spark MLib - 基础介绍 机器学习算法 决策树 分类原则 分类原理 基尼系数 熵
大数据·人工智能·算法·决策树·机器学习·spark-ml
丁劲犇3 小时前
基于Qt的MCP LLM代理服务开发实战:从0到1扩展大语言模型
c++·qt·llm·agent·httpserver·mcp
肥猪猪爸3 小时前
使用LSTM进行时间序列分析
数据结构·人工智能·rnn·深度学习·算法·lstm·时间序列分析
哈听星3 小时前
数值积分实验
算法