求助,使用map+并查集TLE
  • 板块P2814 家谱
  • 楼主_WRYYY_
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/2/8 12:04
  • 上次更新2023/10/28 09:26:17
查看原帖
求助,使用map+并查集TLE
333709
_WRYYY_楼主2022/2/8 12:04
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#include<ext/pb_ds/trie_policy.hpp>
#include<ext/pb_ds/priority_queue.hpp>
#define ll  long long
#define ull unsigned long long
using namespace std;
using namespace __gnu_pbds;
inline ll read(){
   long long s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9')s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
   return s*w;
}
inline void print(ll ch){
	if (ch<0)ch=-ch,putchar('-');
	if (ch>9)print(ch/10);
	putchar(ch%10+'0');
}
map<string,string> a;
string fi(string s){
	if(s!=a[s])
	a[s]=fi(a[s]);
	return a[s];
}
string ls_,lf;
int main()
{
	char lz=getchar();
	while(lz!='$'){
		cin>>ls_;
		getchar();
		if(lz=='#'){
			lf=ls_;
			if(a[ls_]=="")a[ls_]=ls_;
		}
		else if(lz=='+'){
			a[ls_]=lf;
		}
		else{
			for(int i=0;i<6;i++)putchar(ls_[i]);
			putchar(32);
			ls_=a[fi(ls_)];
			for(int i=0;i<6;i++)putchar(ls_[i]);
			putchar(10);
		}
		lz=getchar();
	}
	return 0;
}
2022/2/8 12:04
加载中...