求助 | 程序不输出
  • 板块P2814 家谱
  • 楼主Steven_lzx
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/10/19 20:35
  • 上次更新2023/11/4 03:15:00
查看原帖
求助 | 程序不输出
470638
Steven_lzx楼主2021/10/19 20:35

Code:\text{Code:}

#include<bits/stdc++.h>
using namespace std;
namespace UFS{int fa[50005];inline void set(int n){for(int i=1;i<=n;i++){fa[i]=i;}return;}int find(int x){if(fa[x]==x){return x;}fa[x]=find(fa[x]);return find(fa[x]);}inline void merge(int i,int j){fa[find(i)]=find(j);return;}}
int n;
char c;
string s,name[50005];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int j,x,y;
	UFS::set(50000);
	while(c^'$')
	{
		if(c=='#')
		{
			cin>>s;
			for(j=1;j<=n;j++)
			{
				if(name[j]==s)
				{
					break;
				}
			}
			if(j>n)
			{
				name[++n]=s;
			}
			x=j;
			cin>>c;
			while(c=='+')
			{
				cin>>s;
				for(j=1;j<=n;j++)
				{
					if(name[j]==s)
					{
						break;
					}
				}
				if(j>n)
				{
					n++;
					name[n]=s;
				}
				y=j;
				UFS::merge(y,x);
				cin>>c;
			}
		}
		else if(c=='?')
		{
			cin>>s;
			cout<<s<<' ';
			for(j=1;j<=n;j++)
			{
				if(name[j]==s)
				{
					break;
				}
			}
			cout<<name[UFS::find(j)]<<endl;
		}
		cin>>c;
	}
	return 0;
} 
2021/10/19 20:35
加载中...