洛谷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;
}
相关推荐
罗小罗同学25 分钟前
安德森癌症中心发表SCOPE IO模型,实现了对罕见肿瘤帕博利珠单抗疗效的精准预测,在患者早期即可预判药效
人工智能·算法·医学图像处理·医学ai
王维同学29 分钟前
IFEO Debugger、VerifierDlls 与 SilentProcessExit 配置
c++·windows·安全·注册表
变量未定义~34 分钟前
Tarjan算法-强连通分量、路径、出差
算法
geovindu43 分钟前
CSharp: Iterative Algorithms
开发语言·后端·算法·c#·.net·迭代算法
小保CPP1 小时前
OpenCV C++计算多边形的最大内切圆
c++·人工智能·opencv·计算机视觉
雨落在了我的手上1 小时前
Java数据结构(六):链表的介绍
java·开发语言·数据结构
道影子1 小时前
《黄帝内经》021章|津凝精晶 沉降为患
人工智能·深度学习·神经网络·算法·机器学习
道影子1 小时前
《黄帝内经》022章|调和双旋 伏风自消
人工智能·深度学习·神经网络·算法·机器学习
lueluelue472 小时前
八股临时总结
c++
Angle.寻梦2 小时前
数据结构--栈与队列
数据结构