第二点为什么RE
查看原帖
第二点为什么RE
400205
basachenboming楼主2021/6/13 14:45
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1000001;
int fa[MAXN];
int x[100001],y[100001];
int e[100001];
int f[100001];
inline int read() 
{
    int x=0,ff=1;
    char c=getchar();
    while(c<'0'||c>'9'){if(c=='-') ff=-1;c=getchar();}
    while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
    return x*ff;
}
void write(int x) 
{
     if(x<0) putchar('-'),x=-x;
     if(x>9) write(x/10);
     putchar(x%10+'0');
}
void chu(int size) 
{
  for(int i=1;i<=size;i++)
  fa[i]=i;
  return;
}
int find(int t)
{
  if(t!=fa[t])  
    fa[t]=find(fa[t]); 
  return fa[t];
}
void w1(int t,int o)
{
	t=find(t);
	o=find(o);
	fa[t]=o;
}
int main()
{int n;
cin>>n;
int m;
bool l;
bool k=0;
int s=0;
for(int i=1;i<=n;i++)
{
 cin>>m;
 chu(n);
 for(int j=1;j<=m;j++)
 {
 	x[i]=read();
 	y[i]=read();
 	l=read();
 	if(l==1)
 	{
 	w1(x[i],y[i]);	
	}
	if(l==0)
	{
		e[s]=x[i];
		f[s]=y[i];
		s++;
	}
 }
 if(s==0)
 {
 	cout<<"YES"<<endl;
 	continue;
 }
 for(int v=1;v<=s;v++)
 {
 	if(find(e[v])==find(f[v]))
 	{
 		cout<<"NO"<<endl;
		 k=1;
 		break;
 		
	}
 }	
 if(k==0)
 {
 	cout<<"YES"<<endl; 
 }
 s=0;
 k=0;
}

return 0;
}
2021/6/13 14:45
加载中...