食物链--poj1182
2015-07-26 14:47
176 查看
http://poj.org/problem?id=1182
题意应该就不用说了,关系之间的解释看大神的吧/article/5032031.html
题意应该就不用说了,关系之间的解释看大神的吧/article/5032031.html
#include<stdio.h> const int maxn = 100005; int f[maxn], r[maxn];//r[i]代表i与根节点之间的关系,0代表同类,1代表x吃y;2代表x被y吃; int Find(int x) { int k = f[x]; if(f[x] != x) { f[x] = Find(f[x]); r[x] = (r[k]+r[x])%3; } return f[x]; } int main() { int i, N, T, ans=0; scanf("%d%d", &N, &T); for(i=0; i<=N; i++) { f[i] = i; r[i] = 0; } while(T--) { int x, y, d; scanf("%d%d%d", &d, &x, &y); int rx = Find(x), ry = Find(y); if(x>N || y>N || (d==2&&x==y) ) ans++; else if(rx == ry && (r[y]+d-1)%3 != r[x]) ans++; else if(rx != ry) { f[rx] = ry; r[rx] = ((d-1)-r[x]+r[y]+3)%3; } } printf("%d\n", ans); return 0; }
相关文章推荐
- Java对象的equals方法分析与重写
- python循环语句
- 利用无名对象初始化对象系统不会调用拷贝构造函数
- 九度oj 1064
- Shell下获取系统时间及转换为时间戳的方法
- TCP三次握手 四次挥手
- C++的逆波兰表达式的求解
- Menu 菜单之OptionsMenu
- [多校2015.01.1002 单调队列] hdu 5289 Assignment
- 使用apktool编译以及反编译apk文件
- 已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行,如何解决
- ios定位
- CF 558E(A Simple Task-计数排序+线段树)
- DT大数据梦工厂 第69讲
- C - A Simple Problem with Integers - poj 3468(区间更新)
- poj 3984 迷宫问题(广搜)
- Dijkstra — 最短路径算法
- ListView优化总结(二)--Android
- JAVA深入研究——Method的Invoke方法
- leetcode刷题。总结,记录,备忘 122