错了两个点,求调
  • 板块P2814 家谱
  • 楼主ddyhy
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/28 23:46
  • 上次更新2024/12/29 12:43:41
查看原帖
错了两个点,求调
1154285
ddyhy楼主2024/12/28 23:46
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int p[N],n,m,k,q;
int find(int x){
	if(p[x]!=x) return p[x]=find(p[x]);
	return p[x];
}
int main(){
	int cnt=1;
	map<string,int> mp;
	map<int,string> mpp;
	string s,fa;
	for(int i=1;i<=50000;i++) p[i]=i;
	cin>>s;
	while(s!="$"){
		string ss=s.substr(1);
		if(mp.count(ss)==0) mp[ss]=cnt++; 
		mpp[cnt-1]=ss;
		int t=mp[ss]; 
		if(s[0]=='#'){
			fa=ss;
		}
		else if(s[0]=='+'){
			p[t]=mp[fa];
		}
		else if(s[0]=='?'){
			int tt=find(t);
			cout<<ss<<' '<<mpp[tt]<<'\n';
		}
		cin>>s;
	}
	return 0;
}
2024/12/28 23:46
加载中...