食物链 POJ - 1182
Posted qingyuyyyyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了食物链 POJ - 1182相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<cstdio> using namespace std; const int N=100010; int p[N]; int d[N]; int find(int x) { if(p[x]!=x) { int u=find(p[x]); d[x]+=d[p[x]]; p[x]=u; } return p[x]; } int main() { int n,k; int res=0; cin>>n>>k; for(int i=1;i<=n;i++) p[i]=i; while(k--) { int t,x,y; scanf("%d%d%d",&t,&x,&y); if(x>n||y>n) { res++; continue; } int fx=find(x); int fy=find(y); if(t==1) { if(fx==fy) { if((d[x]-d[y])%3) res++; } else { p[fx]=fy; d[fx]=d[y]-d[x]; } } else if (t==2) { if(fx==fy) { if((d[x]-d[y]-1)%3) res++; } else { p[fx]=fy; d[fx]=d[y]-d[x]+1; } } } printf("%d",res); return 0; }
以上是关于食物链 POJ - 1182的主要内容,如果未能解决你的问题,请参考以下文章