map90TLE求助
查看原帖
map90TLE求助
528478
Steven_Gerrard楼主2022/7/19 09:47
#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2000010;
int n,m;
int p[N];
map <int, int> S;
struct query
{
	int x,y,e;
}query[N];
int get(int x)
{
	if(S.count(x)==0)S[x]=++n;
	return S[x];
}
int find(int x)
{
	if(p[x]!=x)p[x]=find(p[x]);
	return p[x];
}
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		n=0;
		S.clear();
		cin>>m;
		for(int i=0;i<m;++i)
		{
			int x,y,e;
			cin>>x>>y>>e;
			query[i]={get(x),get(y),e};
		}
		for(int i=1;i<=n;++i)
		{
			p[i]=i;
		}
		for(int i=0;i<m;++i)
		{
			if(query[i].e==1)
			{
				int pa=find(query[i].x),pb=find(query[i].y);
				p[pa]=pb;
			}
		}
		bool has_conflict=false;
		for(int i=0;i<m;++i)
		{
			if(query[i].e==0)
			{
				int pa=find(query[i].x),pb=find(query[i].y);
				if(pa==pb)
				{
					has_conflict=true;
					break;
				}
			}
		}
		if(has_conflict)puts("NO");
		else puts("YES");
	}
	return 0;
}

就TLE了第二个点TLE

2022/7/19 09:47
加载中...