P2024 [NOI2001] 食物链(并查集)
Posted SSL_LKJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2024 [NOI2001] 食物链(并查集)相关的知识,希望对你有一定的参考价值。
食物链
解题思路
这题可以用扩展域并查集
分别是:
同类
捕食
天敌
AC代码
#include<cstdio>
using namespace std;
int n,k,ans,f[50005*3];
int find(int x)
{
if(f[x]==x)return x;
return f[x]=find(f[x]);
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=3*n;i++)f[i]=i;
for(int i=1;i<=k;i++)
{
int type,x,y;
scanf("%d%d%d",&type,&x,&y);
if(x>n||y>n||(type==2&&x==y)){ans++;continue;}//特殊
int x1=find(x),y1=find(y),x2=find(x+n),y2=find(y+n),x3=find(x+n*2),y3=find(y+n*2);//找祖先
if(type==1)//不同情况
{
if(x2!=y1&&x3!=y1)f[x1]=y1,f[x2]=y2,f[x3]=y3;
else ans++;
}
else
{
if(x1!=y1&&x3!=y1)f[x1]=y3,f[x2]=y1,f[x3]=y2;
else ans++;
}
}
printf("%d",ans);
return 0;
}
谢谢
以上是关于P2024 [NOI2001] 食物链(并查集)的主要内容,如果未能解决你的问题,请参考以下文章