社区讨论
90分持续30min求助
P1955[NOI2015] 程序自动分析参与者 4已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mi7cr56t
- 此快照首次捕获于
- 2025/11/20 19:32 4 个月前
- 此快照最后确认于
- 2025/11/20 19:32 4 个月前
CPP
#include<bits/stdc++.h>
#define re register int
#define MAXN 100010
using namespace std;
typedef long long ll;
ll read()
{
ll ret=0,f=1;char ch=getchar();
while('0'>ch||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while('0'<=ch&&ch<='9'){ret=(ret<<3)+(ret<<1)+(ch^48);ch=getchar();}
return ret*f;
}
map<int,int> get;
int fa[MAXN<<2],n,T,k,u,v,DFN;
bool flag;
int find(int x)
{
if(fa[x]!=x)fa[x]=find(fa[x]);
return fa[x];
}
int main()
{
T=read();
while(T--)
{
n=read();flag=0;DFN=0;
for(re i=1;i<=(n<<2);i++)fa[i]=i;
get.clear();
for(re i=1;i<=n;i++)
{
u=read(),v=read(),k=read();
if(!flag)
{
if(get.find(u)==get.end())get[u]=++DFN;
if(get.find(v)==get.end())get[v]=++DFN;
u=get[u];v=get[v];
if(k)
{
if(find(u)==find(v+(n<<1)))flag=1;
else fa[find(u)]=find(v),fa[find(u+(n<<1))]=find(v+(n<<1));
}
else
{
if(find(u)==find(v))flag=1;
else fa[find(u)]=find(v+(n<<1)),fa[find(u+(n<<1))]=find(v);
}
}
}
if(flag)puts("NO");
else puts("YES");
}
}
写了个种类并查集第三个点持续WA中
抑郁了。。。。。。
求教各位大佬瑕疵在何处
回复
共 3 条回复,欢迎继续交流。
正在加载回复...