又是被虐的一天呢~(AC是不可能的,这辈子不可能AC的。做题又不会做,就是打打暴力,才能维持骗骗分这样子。在机房里的感觉比回家的感觉好多了!里面个个都是大佬,个个都是死宅,我超喜欢在里面的!)


(↑以上是正经的分割线)

Description

有一颗n个点的树,刚开始每个点都没有颜色。

Alice和Bob会轮流对这棵树的一个点涂色,Alice涂白,Bob涂黑,Alice先手。

若最后存在一个白点,使得这个白点所有相邻点都为白色,则Alice胜,否则Bob胜。

请问是先手必胜还是后手必胜。

Input

第一行一个整数n。

接下来n-1行每行两个整数ai,bi,表示有一条边连接ai,bi。

Output

    若先手必胜,输出"First"(不含引号),否则输出"Second"(不含引号)。

Sample Input

3
1 2
2 3

Sample Output

First

HINT

2<=n<=10^5

保证输入为一棵n个点的树

本题采用subtask。存在10%的数据满足n≤8。


Solution

贪心即可。考虑当前树上的叶子节点,若先手将其父亲节点染为白色,则后手定会将其儿子节点染为黑色,否则该儿子节点满足条件,先手胜利。若该父亲节点有两个或以上儿子节点,先手必胜。

每一轮涂色后,该两点对胜负无影响,直接从树上删去,继续贪心。最后判断根节点是否满足条件即可。

Code

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct edge{
int to,next;
}e[];
int n,head[];
int dfs(int u,int fa){
int flag=;
for(int i=head[u];~i;i=e[i].next){
int v=e[i].to;
if(v==fa)
continue;
flag+=dfs(v,u);
}
if(flag>=){
puts("First");
exit();
}
return flag^;
}
int main(){
memset(head,-,sizeof(head));
scanf("%d",&n);
for(int i=,cnt=-;i<n;i++){
int u,v;
scanf("%d%d",&u,&v);
e[++cnt]=(edge){v,head[u]};
head[u]=cnt;
e[++cnt]=(edge){u,head[v]};
head[v]=cnt;
}
if(dfs(,))
puts("First");
else
puts("Second");
return ;
}

【agc014d】Black and White Tree的更多相关文章

  1. 【机器学习】决策树(Decision Tree) 学习笔记

    [机器学习]决策树(decision tree) 学习笔记 标签(空格分隔): 机器学习 决策树简介 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树).其每个非叶节点表示一个 ...

  2. 【BZOJ2959】长跑(Link-Cut Tree,并查集)

    [BZOJ2959]长跑(Link-Cut Tree,并查集) 题面 BZOJ 题解 如果保证不出现环的话 妥妥的\(LCT\)傻逼题 现在可能会出现环 环有什么影响? 那就可以沿着环把所有点全部走一 ...

  3. 【BZOJ2588】Count On a Tree(主席树)

    [BZOJ2588]Count On a Tree(主席树) 题面 题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第 ...

  4. 【BZOJ2816】【ZJOI2012】网络(Link-Cut Tree)

    [BZOJ2816][ZJOI2012]网络(Link-Cut Tree) 题面 题目描述 有一个无向图G,每个点有个权值,每条边有一个颜色.这个无向图满足以下两个条件: 对于任意节点连出去的边中,相 ...

  5. 【CF434E】Furukawa Nagisa's Tree 点分治

    [CF434E]Furukawa Nagisa's Tree 题意:一棵n个点的树,点有点权.定义$G(a,b)$表示:我们将树上从a走到b经过的点都拿出来,设这些点的点权分别为$z_0,z_1... ...

  6. 【CF725G】Messages on a Tree 树链剖分+线段树

    [CF725G]Messages on a Tree 题意:给你一棵n+1个节点的树,0号节点是树根,在编号为1到n的节点上各有一只跳蚤,0号节点是跳蚤国王.现在一些跳蚤要给跳蚤国王发信息.具体的信息 ...

  7. 【SPOJ】QTREE7(Link-Cut Tree)

    [SPOJ]QTREE7(Link-Cut Tree) 题面 洛谷 Vjudge 题解 和QTREE6的本质是一样的:维护同色联通块 那么,QTREE6同理,对于两种颜色分别维护一棵\(LCT\) 每 ...

  8. 【SPOJ】Count On A Tree II(树上莫队)

    [SPOJ]Count On A Tree II(树上莫队) 题面 洛谷 Vjudge 洛谷上有翻译啦 题解 如果不在树上就是一个很裸很裸的莫队 现在在树上,就是一个很裸很裸的树上莫队啦. #incl ...

  9. 【BZOJ2870】最长道路tree 点分治+树状数组

    [BZOJ2870]最长道路tree Description H城很大,有N个路口(从1到N编号),路口之间有N-1边,使得任意两个路口都能互相到达,这些道路的长度我们视作一样.每个路口都有很多车辆来 ...

随机推荐

  1. [Python] Statistical analysis of time series

    Global Statistics: Common seen methods as such 1. Mean 2. Median 3. Standard deviation:  the larger ...

  2. 第五章,AsyncTask和ProgressBar的练习(Android)

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  3. [LeetCode]Single Number 异或的妙用

    1.数组中仅仅有一个元素仅仅出现一次,其余出现偶数次. 利用异或中同样元素相互抵消的方式求解. 2.数组中仅仅有2个元素仅仅出现一次.其余出现偶数次. class Solution { public: ...

  4. BZOJ3511: 土地划分

    [传送门:BZOJ3511] 简要题意: 给出n个点,m条边,每个点有A和B两种形态,一开始1为A,n为B 给出VA[i]和VB[i],表示第i个点选择A和B形态的价值 每条边给出x,y,EA,EB, ...

  5. BZOJ5204: [CodePlus 2018 3 月赛]投票统计

    [传送门:BZOJ5204] 简要题意: 有n个选手,每个选手会选择一道题投票,求出投票最多的题目个数和这些题目的编号,如果所有题目的投票数相同,则输出-1 题解: 直接搞 离散化,然后判断就可以了 ...

  6. Mysql之索引的基本概念

    一.索引是什么? 比如我们要在字典中找某一字,如何才能快速找到呢?那就是通过字典的目录. 对数据库来说,索引的作用就是给‘数据’加目录. 二.索引算法 设有N条随机记录,不用索引,平均查找N/2次,那 ...

  7. 【Linux系统引导过程】

    *** 第一步 开机自检 根据主板BIOS中的启动顺序,移交系统控制权. 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它. 这是因为BIO ...

  8. Windows系统的关机、休眠和睡眠状态究的区别

    原文:Windows系统的关机.休眠和睡眠状态究的区别 相信有些小伙伴跟我一样,对电脑的一些常用操作或名词不太熟悉,今天我们就简单来聊聊电脑的关机.休眠和睡眠状态究竟有何区别吧! 如果你在电脑左下角的 ...

  9. Linux下经常使用的C/C++开源Socket库

    1.      Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.html 2.      ACE: h ...

  10. java之JMX

    java之JMX 有关JMX的定义和架构就不具体解释了.见百度百科: http://baike.baidu.com/link? url=6QzGGEqphTmpft3ll5mXmDNVRdvLRZhk ...