题目链接:http://agc014.contest.atcoder.jp/tasks/agc014_d

题意:有一棵树先手涂白色,后手涂黑色,直到不能再涂为止。涂完后再把所有黑色直接相邻的白色都变成黑色。

如果最后还有白色那么是先手赢,否则是后手赢。

题解:先不管这是一棵树直接放在一条直线上考虑,显然奇数个点是先手赢,偶数个点是后手赢。因为,想要有

白色一定要白色多涂一次才行,这是最起码的。

然后再放到树上考虑。以一个点为根节点,如果子节点的个数为奇数的子树超过两条那么肯定是先手赢,因为算

上根节点至少有一个是奇数点有一个偶数点,偶数点会全都变成黑色但是奇数点肯定有白色留下。

最后看一下代码好好理解一下。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
const int M = 1e5 + 10;
vector<int> vc[M];
int dfs(int pos , int pre) {
int len = vc[pos].size();
int res = 0;
for(int i = 0 ; i < len ; i++) {
int v = vc[pos][i];
if(v != pre) {
res += dfs(v , pos);
}
}
if(res >= 2) {
printf("First\n");
exit(0);
}
else if(res == 0) return 1;
else return 0;
}
int main() {
int n , u , v;
scanf("%d" , &n);
for(int i = 1 ; i < n ; i++) {
scanf("%d%d" , &u , &v);
vc[u].push_back(v);
vc[v].push_back(u);
}
int ans = dfs(1 , -1);
if(ans) {
printf("First\n");
}
else {
printf("Second\n");
}
return 0;
}

最新文章

  1. Apache2.4开启GZIP功能
  2. XH
  3. -webkit-text-size-adjust
  4. ACM: Ubiquitous Religions-并查集-解题报告
  5. Unity3d LineRenderer画线
  6. 用Eclipse插件Bytecode Outline来查看Java字节码
  7. AC自动机——多模式串匹配的算法思想
  8. J2se中的声音---AudioPlayer
  9. 用 C++ 标准模板库(STL)的 vector 实现二叉搜索树(BST)
  10. 【LeetCode】Algorithms 题集(三)
  11. HTML5中将video设置为背景的方法
  12. thinkjs——一个字段一种数字代表两种状态
  13. spring AOP的两种配置方式
  14. GIT 分支管理:创建与合并分支、解决合并冲突
  15. Linux内核及分析 第一周 计算机是如何工作的?
  16. Nginx 访问日志配置
  17. python练习题-day3
  18. 5. Tomcat窗口标题修改
  19. libevent源码分析:evmap_io_active_函数
  20. Ubuntu16.04怎样安装Python3.6

热门文章

  1. 我的ubuntu kylin中mentohust的使用历程
  2. 浅谈设计模式及python实现
  3. Docker相关地址
  4. 用html和css写一个头部header和左侧菜单栏menu-bar固定的的页面
  5. appcan IDE 无法 请求数据
  6. 【POJ - 3616】Milking Time(动态规划)
  7. 【0729 | Day 3】Python基础(一)
  8. [Spring cloud 一步步实现广告系统] 20. 系统运行测试
  9. 本地在不安装Oracle的情况下安装PLSQL客户端
  10. JMeter使用JSON Extractor插件实现将一个接口的JSON返回值作为下一个接口的入参