这题说的是 在一个 森林中 两个人在这棵树上涂颜色,黑色或者白色,第一次只能在1 号节点上涂色 第二次 只能在2上涂,以此类推, 在每个节点上只能涂黑色或者白色,并且相邻的点不能有相同的颜色,最后求不能填的人就输了。

每个点周围的比他小的点 都会有一个祖先(或者是他们自己),我们知道他周围的点的祖先中最小的那个点 一定是影响他的最小的点 那么他取什么值这就不那么重要了。无论他取黑还是白,后面的就只是相对而言,那么如果他受到第二小或者以上的点的影响,那么他就一定不能了, 还有就是当他和他周围点离他们共同祖先的距离一样的时候也是不行的。

哪个先出现错误哪个就失败了。

#include <iostream>
#include <algorithm>
#include<string.h>
#include<vector>
#include <cstdio>
using namespace std;
const int maxn=;
struct Edg{
int to,nxt;
Edg(int a=,int b=){
to=a; nxt=b;
}
}P[maxn*];
int len[maxn],fa[maxn],first[maxn],pos;
void add(int a, int b){
P[pos].to=b; P[pos].nxt=first[a];
first[a]=pos++;
}
int find(int x){
if(x!=fa[x]){
int f=find(fa[x]);
len[ x ] = len[ fa[x] ]^len[x];
fa[ x ] = f;
}
return fa[x];
}
bool uunion(int x, int y){
int fx=find(x);
int fy=find(y);
if(fx==fy){
return len[x]!=len[y];
}
if(fx<fy){
fa[fy]=fx;
len[fy ] = len[x]^len[y]^;
}else{
fa[fx]=fy;
len[fx] = len[x]^len[y]^;
}
return true;
}
int qq[maxn*];
int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
int N,M,cas;
scanf("%d",&cas);
for(int cc=; cc<=cas; cc++){
pos=;
scanf("%d%d",&N,&M);
for(int i=; i<=N; i++){
first[i]=; fa[i]=i; len[i]=;
}
for(int i=; i<M; i++){
int a,b;
scanf("%d%d",&a,&b);
add(a,b); add(b,a);
}
int ans=-;
for(int i=; i<=N&&ans==-; i++){
int pp=;
for(int j=first[i]; j ; j=P[j].nxt){
int to=P[j].to;
if(to>i)continue;
qq[pp++]=find(to);
}
sort(qq,qq+pp);
pp = unique(qq,qq+pp)-qq;
for(int j=; j<pp; j++)
if( qq[j]% != i% )ans=i;
for(int j=first[i]; j; j=P[j].nxt){
int to=P[j].to;
if(to>i) continue;
if(!uunion(i,to))ans=i;
}
}
printf("Case %d: ",cc);
if(ans==-)printf("Draw\n");
else{
if( (ans&) ==)printf("Maze\n");
else printf("Fat Brother\n");
}
} return ;
}

师大校赛D coloring Game 并查集的更多相关文章

  1. 2019浙师大校赛(浙大命题)(upc复现赛)总结

    2019浙师大校赛(浙大命题)(upc复现赛)总结 早上九点开始.起得迟了,吃了早饭慌慌张张跑过去,刚到比赛就开始了. 开始分别从前往后和从后往前看题,一开始A题,第一发WA,第二次读题发现漏看了还有 ...

  2. HDU 4750 Count The Pairs (2013南京网络赛1003题,并查集)

    Count The Pairs Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others ...

  3. zoj 3659 第37届ACM/ICPC 长春赛区现场赛E题 (并查集)

    题意:给出一棵树,找出一个点,求出所有点到这个点的权值和最大,权值为路径上所有边权的最小值. 用神奇的并查集,把路按照权值从大到小排序,然后用类似Kruskal的方法不断的加入边. 对于要加入的一条路 ...

  4. noip模拟赛 动态仙人掌(并查集,贪心)

    思路: 贪心+并查集 因为45‘,所以可以很方便的算出每个仙人掌的最晚起跳(左端点) 右端点自然也能出来 先按左端点排序 如果他右面的和他相交,就更新 用并查集维护这个更新的关系 更新的同时维护高就好 ...

  5. PAT 天梯赛 L2-024. 部落 【并查集】

    题目链接 https://www.patest.cn/contests/gplt/L2-024 题意 给出 几个不同的圈子,然后 判断 有哪些人 是属于同一个部落的,或者理解为 ,有哪些人 是有关系的 ...

  6. 2019 ICPC 徐州网络赛 B.so easy (并查集)

    计蒜客链接:https://nanti.jisuanke.com/t/41384 题目大意:给定n个数,从1到n排列,其中有q次操作,操作(1) 删除一个数字 // 操作(2)求这个数字之后第一个没有 ...

  7. 蓝桥杯模拟赛-引爆炸弹-DFS+并查集

    今天整理电脑,翻出来了很久以前大佬给的题,贴一下. 引爆炸弹 1000ms 在一个 n×m的方格地图上,某些方格上放置着炸弹.手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸 ...

  8. 并查集+拓扑排序 赛码 1009 Exploration

    题目传送门 /* 题意:无向图和有向图的混合图判环: 官方题解:首先对于所有的无向边,我们使用并查集将两边的点并起来,若一条边未合并之前, 两端的点已经处于同一个集合了,那么说明必定存在可行的环(因为 ...

  9. POJ-2421Constructing Roads,又是最小生成树,和第八届河南省赛的引水工程惊人的相似,并查集与最小生成树的灵活与能用,水过~~~

    Constructing Roads Time Limit: 2000MS   Memory Limit: 65536K               Description There are N v ...

随机推荐

  1. 图->遍历

    文字描述 从图中某一顶点出发遍历图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫图的遍历. 深度优先搜索:类似树的先根遍历:假设初始状态下,图中所有顶点都未曾被访问,则从某个顶点出发,访问此顶点 ...

  2. elasticsearch-head的安装和使用

    (一) 安装nodeJS, 下载nodejs安装包,直接下一步就可以,运行node -v 和npm -v有如下结果,表示安装成功. (二) 安装git(安装过程略过), 1.git clone git ...

  3. threadPoolExecutor的基本解析

    线程池的构造方法中常见参数简介 corepoolsize:核心线程数,即便这里的线程处于空闲状态,也不会被回收,会一直存在线程池中 maxmumpoolsize:线程池所能容纳的最大线程数,超过这个数 ...

  4. Activiti(生成25张表)

    有两种方式,第一种是使用默认的配置文件,第二种是指定配置文件: package com.ouyan.activiti.table; import org.activiti.engine.Process ...

  5. 容器化 RDS:你须要了解数据是怎样被写&quot;坏&quot;的

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/79877076 容器化 RD ...

  6. 报错解决——Disconnected:No supported authentication methods available

    该问题是由于ssh链接未允许远程密码认证导致的 解决方法 通过管理控制台进入系统,查看 /etc/ssh/sshd_config配置文件中是否包含以下配置 PasswordAuthentication ...

  7. 工具篇-Mac上搭建本地svn服务器以及使用Cornerstone进行本地版本控制

    1.在桌面上见一个文件夹命名为svn,然后打开终端: 创建一个mycode仓库:svnadmin create /Users/gaoyizhen736(自己的mac的用户名)/Desktop/svn/ ...

  8. api-gateway-engine知识点(2)

    GroupVersion实现engine本地缓存 package com.inspur.cloud.apigw.engine.cache; import java.util.Map;import ja ...

  9. maven install安装工程

    在一个项目中,想要运行一个子工程,要先把它的依赖工程导入到maven中. 右键依赖工程--run as--maven install.

  10. js关卡函数,throat函数实现,定时运行函数

    function throat(callback,num){ var timer = null; callback = callback || function(){}; return functio ...