70pts求助
查看原帖
70pts求助
310375
blind_L_S_Y楼主2022/10/23 04:28
#include<bits/stdc++.h>
using namespace std;
int T,n=200010,m,x,y,fa[100010];
int tot=0,qa[100010],qb[100010];

map<int,int>mp;
int cnt=0; 
int lsh(int x)
{
	if(mp.count(x))
	  return mp[x];
	//cout<<cnt<<endl;
	return mp[x]=cnt++;
}
struct node{
	int a,b,opt;
}r[100010];
int find(int x)
{
	if(x!=fa[x])
	  fa[x]=find(fa[x]);
	return fa[x];
}
void csh()
{
    tot=0;
    memset(qa,0,sizeof(qa));
    memset(qb,0,sizeof(qb));
    for(int i=0;i<=n;i++)
      fa[i]=i; 
    cnt=0;
}
bool fake_main()
{
	cin>>m;
	csh();
	for(int i=1;i<=m;i++)
	{
	  cin>>r[i].a>>r[i].b>>r[i].opt;
	  r[i].a=lsh(r[i].a);
	  r[i].b=lsh(r[i].b);
	  if(r[i].opt==1)
	    fa[find(r[i].a)]=find(r[i].b);
	}
	for(int i=1;i<=m;i++)
	  fa[i]=find(fa[i]);
	for(int i=1;i<=m;i++)
	  if(r[i].opt==0)
	  {
	    if(find(r[i].a)==find(r[i].b))
	      return false;
	  }
	return true;
}
int main()
{
	cin>>T;
	while(T--)
	{
	  if(fake_main())
	    cout<<"YES"<<endl;
	  else 
	    cout<<"NO"<<endl;
	}
	return 0;
}

调了一个小时啦,一个TLE,两个WA,心态炸了

2022/10/23 04:28
加载中...