/ tabris /

记录详情

Accepted


  
# 状态 耗时 内存占用
#1 Accepted 2ms 1.406 MiB
#2 Accepted 3ms 1.297 MiB
#3 Accepted 63ms 1.371 MiB
#4 Accepted 2ms 988.0 KiB
#5 Accepted 13ms 1.223 MiB
#6 Accepted 299ms 2.152 MiB

代码

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=100005;
int fa[maxn<<1],size[maxn<<1],mapped[2*maxn],hui[2*maxn];
inline int read(){
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x*f;
}
int n,m,x,y,fx,fy,cnt,next;
int getfa(int x){
	if(fa[x]==x)return x;
	return fa[x]=getfa(fa[x]);
}
int main(){
	int t;
	t=read();
	for(int k=1;k<=t;k++){
		printf("Case #%d:\n",k);
		memset(mapped,0,sizeof(mapped));
		n=read();m=read();
		for(int i=1;i<=n;i++){fa[i]=i;size[i]=1;mapped[i]=i;}
		cnt=n;
		int shu_bangpai=n;
		for(int i=1;i<=m;i++){
			char s[105];
			scanf("%s",s);
			if(s[0]=='q')printf("%d\n",shu_bangpai);
			if(s[0]=='f'){
				x=read();y=read();
				fx=getfa(mapped[x]);fy=getfa(mapped[y]);
				if(fx==fy)continue;
				if(size[fx]==size[fy]){
					printf("Either is winner!\n");
					continue;
				}
				shu_bangpai--;
				if(size[fx]>size[fy]){
					size[fx]+=size[fy];
					//size[fy]=0;
					fa[fy]=fx;
					printf("%d is winner!\n",x);
					continue;
				}
				if(size[fx]<size[fy]){
					size[fy]+=size[fx];
					//size[fx]=0;
					fa[fx]=fy;
					printf("%d is winner!\n",y);
					continue;
				}
			}
			if(s[0]=='t'){//x诱惑y 
				x=read();y=read();
				fx=getfa(mapped[x]),fy=getfa(mapped[y]);
				if(fx==fy)continue;
				if(size[fy]==1)shu_bangpai--;
				mapped[y]=++cnt;
				fa[mapped[y]]=mapped[x];
				size[fx]++;
				size[fy]--;
			}
			if(s[0]=='r'){//反叛,传位。 
				x=read();
				fx=getfa(mapped[x]);
				if(size[fx]==1)continue;
				size[fx]--;
				mapped[x]=++cnt;
				fa[mapped[x]]=mapped[x];
				size[mapped[x]]=1;
				shu_bangpai++;
			}
		}
	}
}

信息

递交者
类型
递交
题目
幼儿园战争
语言
C++
递交时间
2019-10-02 19:23:12
评测时间
2019-10-02 19:23:12
评测机
分数
192
总耗时
384ms
峰值内存
2.152 MiB