我这个50分有大佬能说说哪里错了吗
查看原帖
我这个50分有大佬能说说哪里错了吗
1413627
xlct楼主2024/9/15 13:12
#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
	int f[200005];
struct p
{
	int l,j,e;
}a[200005];
int cmp(p q,p w)
{
	return q.e>w.e;
}
int find(int x)
{
	if(f[x]!=x)f[x]=find(f[x]);
	return f[x]; 
}
void solve(int n)
{
map<int,int>m;
int temp=1;

sort(a,a+n,cmp);
for(int i=0;i<n;i++)
{
	if(!m[a[i].l])
	{
			m[a[i].l]=temp;
		temp++;
	}
		if(!m[a[i].j])
	{
			m[a[i].j]=temp;
		temp++;
	}
}
	for(int i=0;i<n;i++)
	{
		if(a[i].e!=0) f[find(m[a[i].l])]=find(m[a[i].j]);
	}
		for(int i=0;i<n;i++)
	{
		if(a[i].e==0)
		{
			if(find(f[m[a[i].l]])!=find(f[m[a[i].j]])){
				cout<<"YES"<<endl;
			return;
			}
			else
			{
			cout<<"NO"<<endl;
			return;
			}
		}
	}
	cout<<"YES"<<endl;	
	
}

int main()
{
	int t;
	cin>>t;
	while(t--)
{
int n;
 cin>>n;
 memset(f,0,sizeof(int));
  for(int i=0;i<n;i++)
  {
  	cin>>a[i].l >>a[i].j >>a[i].e;
  }
	for(int i=0;i<n;i++) f[i]=i;
solve(n);
}	
    return 0;     
}
2024/9/15 13:12
加载中...