HDU 5963 思维题
来源:互联网 发布:大班mg红异端淘宝 编辑:程序博客网 时间:2024/05/21 11:37
题意:
一道思维题
中文题意不解释。
思路:
首先考虑一条链的情况,与根节点相连的那条边,一定是最后变动的一条边。如果它是1,那无论下面的边怎么变,都必定要经过奇数次操作才能使它变成0,反之,它是0就要经过偶数次操作才行。
对于一棵树的情况,我们对于一个根,只要知道与根相连的所有权值1的边有多少,就可以判断出游戏要经过奇数还是偶数次才能结束,从而得到答案。
代码:
#include <bits/stdc++.h>using namespace std;const int MAXN = 50000;vector <pair <int, int> > tree[MAXN];void change(int x, int y, int z) { int cnt = tree[x].size(); for (int i = 0; i < cnt; i++) { if (tree[x][i].first == y) { tree[x][i].second = z; break; } }}int main() { //freopen("in", "r", stdin); int T; scanf("%d", &T); while (T--) { int n, m; scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) tree[i].clear(); for (int i = 1; i < n; i++) { int u, v, w; scanf("%d%d%d", &u, &v, &w); tree[u].push_back(make_pair(v, w)); tree[v].push_back(make_pair(u, w)); } while (m--) { int op, x, y, z; scanf("%d", &op); if (op == 0) { scanf("%d", &x); int num = 0, cnt = tree[x].size(); for (int i = 0; i < cnt; i++) { int w = tree[x][i].second; num += w; } if (num & 1) puts("Girls win!"); else puts("Boys win!"); } else { scanf("%d%d%d", &x, &y, &z); change(x, y, z); change(y, x, z); } } } return 0;}
0 0
- HDU 5963 思维题
- hdu 5101 思维题
- hdu 5744 思维题
- hdu 5873 思维题
- HDU 5969 思维题
- hdu-4451 思维题
- HDU 6095 思维题
- HDU 5596 思维题(逆向思维)*
- hdu 5014 思维题/推理
- hdu 4803 贪心/思维题
- hdu 4474 BFS+思维题
- hdu 5223 GCD 思维题
- HDU 5301 Buildings(思维题)
- Hdu-5301 Buildings(思维题)
- hdu 5805 简单思维题
- hdu 4811 Ball 思维题
- hdu 4473 Exam (思维题 问题转化)
- hdu 4550 贪心 思维题 不错
- 第一篇博客不知道写什么好 就当记录我自己的学习点滴吧,当记笔记的地方
- 字符串Hash (BKDRHash)
- php上传文件
- Python正则表达式的七个使用范例
- 寄十月一日黎平兄弟
- HDU 5963 思维题
- ios 牛人技术博客列表
- 如何在一个页面添加多个文件上传控件
- Jquery ajaxSubmit()使用案例以及遇到的问题解决方案
- 图论总结
- 第十一周 项目1-验证算法(2)--二叉树的构造算法认证
- DatabaseMetaData 有关整个数据库的信息:表名、表的索引、数据库产品的名称和版本、数据库支持的操作
- Java for Web学习笔记(三二):JSTL(8)XML Tag
- java攻城狮所需养料