首页 > 代码库 > POJ - 1182 食物链
POJ - 1182 食物链
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 }
POJ - 1182 食物链
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。