码迷,mamicode.com
首页 > 其他好文 > 详细

POJ - 1182 食物链

时间:2017-03-26 21:19:50      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:表示   ace   src   max   div   alt   logs   isp   close   

技术分享
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 
 7 const int MAXN = 50003;
 8 
 9 int n, k, ans, d, x, y;
10 int par[MAXN], relation[MAXN];//par[x]表示x与par[x]的关系能够确定,relation[x]表示x与par[x]的关系:0表示同类,1表示par[x]吃x,2表示x吃par[x]
11 
12 int getPar(int a) {
13     if(par[a] != a) {
14         int pa = getPar(par[a]);
15         relation[a] = (relation[a] + relation[par[a]]) % 3;
16         par[a] = pa;
17     }
18     return par[a];
19 }
20 
21 void merg(int d, int a, int b) {
22     int pa = getPar(a), pb = getPar(b);
23     if(pa == pb) {
24         if((relation[b] - relation[a] + 3) % 3 != d) {
25             ++ans;
26         }
27         return ;
28     }
29     par[pb] = pa;
30     relation[pb] = (relation[x] - relation[y] + d + 3) % 3;
31 }
32 
33 int main() {
34     scanf("%d%d", &n, &k);
35     for(int i = 1; i <= n; ++i) {
36         par[i] = i;
37         relation[i] = 0;
38     }
39     ans = 0;
40     while(k-- > 0) {
41         scanf("%d%d%d", &d, &x, &y);
42         if(x > n || y > n || (d == 2 && x == y)) {
43             ++ans;
44             continue;
45         }
46         merg(d - 1, x, y);
47     }
48     printf("%d\n", ans);
49     return 0;
50 }
View Code

 

POJ - 1182 食物链

标签:表示   ace   src   max   div   alt   logs   isp   close   

原文地址:http://www.cnblogs.com/NWUACM/p/6623965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!