From ff8c1e167d1332ce40b9726a8d5ed0bfeebee297 Mon Sep 17 00:00:00 2001 From: Kirito <1362050620@qq.com> Date: Sun, 1 May 2016 14:25:04 +0800 Subject: [PATCH] Create 1182.cpp --- POJ/1182.cpp | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 POJ/1182.cpp diff --git a/POJ/1182.cpp b/POJ/1182.cpp new file mode 100644 index 0000000..6227ece --- /dev/null +++ b/POJ/1182.cpp @@ -0,0 +1,70 @@ +#include +using namespace std; + +#define MAXN 50005 + +int father[MAXN]; +///Relationship: 0 Same 1 Father--eat-->son 2 son--eat-->father +int relation[MAXN]; + + +int find(int pos) +{ + if(father[pos]!=pos) + { + int x=father[pos]; + father[pos]=find(x); + relation[pos]=(relation[pos]+relation[x])%3; + } + return father[pos]; +} + +int main() +{ + int N,K; + scanf("%d %d",&N,&K); + { + /// Init + for(int i=0; i<=N; i++) + { + relation[i]=0; + father[i]=i; + } + int a,b,c; + int cnt=0; + for(int i=0;iN||c>N) + { + ++cnt;continue; + } + int rootfather_b=find(b); + int rootfather_c=find(c); + if(rootfather_b==rootfather_c) + { + if(a==1&&relation[b]!=relation[c]) + { + ++cnt;continue; + } + if(a==2&&relation[b]!=(relation[c]+2)%3) + { + ++cnt;continue; + } + } + else + { + father[rootfather_c]=rootfather_b; + relation[rootfather_c]=(relation[b] + (a-1) + (3-relation[c])) % 3; + + } + } + printf("%d\n",cnt); + } + return 0; + +}