WA on #7-#10 求条玄关
查看原帖
WA on #7-#10 求条玄关
750691
Urielyao楼主2024/11/13 17:44
#include<bits/stdc++.h>
using namespace std;
int n,m,c,t,u,v;
const int mod=200002;//0=F  1-100000  100001=U  100002-200001  200002=T
//-x+x=200002
int fa[200005];
bool vis[200005];
char opt[2];
int op;
int find(int x)
{
	op=0;
	if(vis[x])
	{
		fa[x]=0;
		return 0;
	}
	else if(vis[mod-x])
		op=100001;
	else if(fa[x]==x)
		op=x;
	else
	{
		vis[x]=1;
		fa[x]=find(fa[x]);
		op=fa[x];
		vis[x]=0;		
	}
	return op;
}
int main()
{
//	freopen("P9869_7.in","r",stdin);
//	freopen("p.out","w",stdout);
	scanf("%d%d",&c,&t);
	while(t--)
	{
		int ans=0;
		for(int i=1;i<=200002;i++)
			fa[i]=i;
		scanf("%d%d",&n,&m);
		for(int i=1;i<=m;i++)
		{
			scanf("%s",&opt);
			if(opt[0]=='-')
			{
				scanf("%d%d",&u,&v);
				fa[u]=fa[mod-v];	
				fa[mod-u]=fa[v];	 		
			}
			else if(opt[0]=='+')
			{
				scanf("%d%d",&u,&v);
				fa[u]=fa[v];
				fa[mod-u]=fa[mod-v];
			}
			else
			{
				scanf("%d",&u);
				if(opt[0]=='F')
					fa[u]=0,fa[mod-u]=200002;
				else if(opt[0]=='T')
					fa[u]=200002,fa[mod-u]=0;
				else 
					fa[u]=100001,fa[mod-u]=100001;
			}
		}
		for(int i=1;i<=n;i++)
			if(find(mod-i)==100001||find(i)==100001) ans++;
		printf("%d\n",ans);
	}
	return 0;
 } 
2024/11/13 17:44
加载中...