MAXN=10000007了#2为啥总RE?
查看原帖
MAXN=10000007了#2为啥总RE?
359475
Tom_yyt楼主2021/8/12 09:53
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=10000007;
int n,fa[MAXN],t,cnt,change[MAXN],cnt2;
struct data{
	int i,j;
}noequ[MAXN];
int find(int x)
{
	if(x==fa[x]) return x;
	int root=find(fa[x]);
	fa[x]=root;
	return root;
}
void merge(int x,int y)
{
	int rx=find(x),ry=find(y);
	fa[rx]=ry;
}
signed main()
{
	scanf("%lld",&t);
	while(t--)
	{
		bool flag=1;
		scanf("%lld",&n);
		cnt=cnt2=0;
		memset(change,0,sizeof(change));
		fill(noequ,noequ+MAXN,(data){0,0});
		for(int i=1;i<=2*n;i++) fa[i]=i;
		for(int k=1;k<=n;k++)
		{
			int i,j,e;
			scanf("%lld%lld%lld",&i,&j,&e);
			if(!change[i])change[i]=++cnt;
			if(!change[j])change[j]=++cnt;
			if(e==1)
				merge(change[i],change[j]);
			if(e==0)
			    noequ[++cnt2]=(data){change[i],change[j]};
		}
		for(int i=1;i<=cnt2;i++)
		{
			int x=noequ[i].i,y=noequ[i].j;
			if(find(x)==find(y))
			{
				flag=0;
				break;
			}
		}
		if(flag) printf("YES\n");
		else printf("NO\n");
	}
	return 0;
}

我觉得这个数组已经开得够大了吧,为啥#2总RE呢

2021/8/12 09:53
加载中...