社区讨论

90分,#3WA,求调

P1955[NOI2015] 程序自动分析参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lw4k4zv8
此快照首次捕获于
2024/05/13 14:02
2 年前
此快照最后确认于
2024/05/13 18:35
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int t;
bool ok,e;
long long x[100005],y[100005];
unordered_map <int,int> fa;
int Findi(int x)
{
	if(fa[x]==x)
	{
		return x;
	}
	return fa[x]=Findi(fa[x]);
}
int Find(int x)
{
	if(fa.find(x)==fa.end())
	{
		fa.insert({x,x});
	}
	return Findi(x);
}
void Union(int x,int y)
{
	int a=Find(x);
	int b=Find(y);
	if(a!=b)
		fa[b]=a;
}
int main()
{
	cin>>t;
	while(t--)
	{
		int n,cnt=0;
		ok=true;
		memset(x,0,sizeof(x));
		memset(y,0,sizeof(y));
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			cin>>x[cnt]>>y[cnt]>>e;
			cnt+=!e;
			if(e)
			{
				Union(x[cnt],y[cnt]);
			 } 
		}
		while(cnt--)
		{
			if(Find(x[cnt])==Find(y[cnt]))
			{
				cnt=(ok=false);
			}
		}
		if(ok)
		cout<<"YES"<<endl;
		else
		cout<<"NO"<<endl;
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...