讨论 / ggbbgg NOI2001
ggbbgg 2016-02-22 23:52:43
点我顶贴 收藏 删除
#include<cstdio>

#include<iostream>

using namespace std;

#define maxx 50001

#define con {++ans;continue;}

int n,k;

int f[3*maxx];//0~n表示同类,n+1~n*2表示食物,n*2+1~n*3表示天敌

int g(int i)

{

return (f[i]==i)?i:(f[i]=g(f[i]));

}

void h(int i,int j)

{

f[g(i)]=g(j);

}

int main()

{

scanf("%d%d",&n,&k);

int m = 3 * n;

for(int i = 1;i <= m;++i)

f[i]=i;

int a,x,y;

int ans(0);

for(int i = 0;i < k;++i)

{

scanf("%d%d%d",&a,&x,&y);

if(x > n || y > n) con

if(a==1)

{

if(g(x+n)==g(y)||g(x+2*n)==g(y)||g(x+n)==g(y+2*n)||g(x+2*n)==g(y+n)) con

h(x,y);

h(x+n,y+n);

h(x+2*n,y+2*n);

}

else

{

if(g(x)==g(y)||g(x+2*n)==g(y)) con

h(x+n,y);

h(x+2*n,y+n);

h(x,y+2*n);

}

}

printf("%d",ans);

return 0;

}

#1 JessicaKrystal@2016-02-23 00:25:53
回复 删除
ggbbgg MZoier的郭神啊= =
#2 JessicaKrystal@2016-02-23 00:28:38
回复 删除
算法交流群:455736710
查看更多回复
提交回复