[模拟赛] GotoAndPlay
GotoAndPlay
10月3日,在杭州市西湖景区,一只小松鼠不停地接受一道道食物,花生、
玉米、饼干,可谓来者不拒,憨态可掬的模样吸引了众多围观者...
Description
小松鼠终于吃撑了,她决定逃离这个地方。
我们用一张连通图来表示整个西湖的范围,每棵容小松鼠逗留的树都用
这张图上的一个点来表示。小松鼠能够通过只跳一次互相到达的两棵树用
图上的一条无向边来连接。
吃撑了的小松鼠有些神志不清,每次她连跳两条边之后才会在到达的那
个点上休息。她想知道,是否存在一种连续的跳法,使得她有机会在所有
的树上都休息至少一次。
对于这种跳法,你可以任选起点,允许重复经过边,允许重复经过点。
但是超萌小松鼠是一只有梦想的小松鼠,她有时能够突破自己的极限,
使一些原本无法互相到达的两个点能够通过一次跳跃互相到达。
Input
第一行两个数\(n,m\).n表示点的个数,m表示边的条数
接下来m行,每行两个数\(x_i ,y_i\) ,表示\(x_i\) 和\(y_i\) 之间能够通过一次跳跃互相到
达。
接下来一行一个数q,表示询问的个数。
接下来\(q\)行,其中的第i行每行两个数\(a_i ,b_i.\)表示在原图的基础上加上从a i 到\(b_i\) 的
边。即成为一张n个点m + 1条边的图。
保证给出的原图是个连通图,\(1 <= a_i , b_i , x_i , y_i <= n\).
Output
输出一共q行,对于第i个询问,当在原图的基础上加上a i 与b i 间的无向边
后,如果小松鼠能够找到一种连续的跳法,使得她有机会在所有的树上至
少休息一次,输出一行“Yes”,否则输出一行“No” 。 (不包含引号)
Constraints
对于前50%,\(n, q <= 10^3 , m <= 2 × 10^3 。\)
对于100%,\(n, q <= 10^5 , m <= 2 × 10^5 。\)
Solution
二分图染色
用0/1表示两种颜色
如果我们把一个点染成0色,那么与之相连的点就染成1色
那么结合题意,就有这样的性质
如果两个点是一种颜色<=>代表这两个点之间隔了两条边
我们把染成0色的点叫做奇点,染成1色的叫做偶点(这个概念很重要)
特别的,如果我们在染色过程发现一个点已经访问过,那么这个时候这个点已经有了颜色,如果当前要染的颜色与之前不相同,则说明当前这个点既是奇点又是偶点,说明松鼠若以它为起点,既能到达所有奇点,又能到达所有偶点,那么待会无论连哪条边都输出"Yes"
在加边过程中,我们判断一下,相连的两个点是不是颜色相同,如果颜色相同的的话,说明这个点同为奇点或同为偶点,我们如果把它们之间连一条边,那么它们将既是奇点,又是偶点,输出"Yes",否则,对结果没有影响,输出"No"
关于题意的
使一些原本无法互相到达的两个点能够通过一次跳跃互相到达。
以及
保证给出的原图是个连通图
我也很无奈~,只能说这个算法只能适用于连通图,如果是非连通图,我们需要重新建边,dfs便利每个联通块,然后对联通块染色,像之前那样判断
Code
#include<bits/stdc++.h>
#define il inline
#define rg register
#define lol long long
#define Min(a,b) (a)<(b)?(a):(b)
#define Max(a,b) (a)>(b)?(a):(b)
using namespace std;
const int N=1e6+10,M=2e5+10;
const int inf=2e9;
int n,m,q,cur,ans;
bool flag;
int to[M<<1],nex[M<<1],head[N];
int col[N];
void in(int &ans)
{
ans=0; int f=1; char i=getchar();
while(i<'0' || i>'9') {if(i=='-') f=-1; i=getchar();}
while(i>='0' && i<='9') ans=(ans<<1)+(ans<<3)+i-'0', i=getchar();
ans*=f;
}
il void add(int a,int b) {
to[++cur]=b;
nex[cur]=head[a];
head[a]=cur;
}
void work(int u,int c) {
col[u]=c;
for(int i=head[u];i;i=nex[i]) {
if(col[to[i]]==-1) work(to[i],(c+1)%2);
else if(col[to[i]]==c) flag=1;
}
}
int main()
{
freopen("GotoAndPlay.in","r",stdin);
freopen("GotoAndPlay.out","w",stdout);
int x,y; in(n),in(m);
for(int i=1;i<=m;i++) {
in(x); in(y);
add(x,y); add(y,x);
}
memset(col,-1,sizeof(col));
work(1,0); in(q);
for(int i=1;i<=q;i++) {
in(x); in(y);
if(flag) puts("Yes");
else puts(col[x]==col[y]?"Yes":"No");
}
return 0;
}
博主蒟蒻,随意转载.但必须附上原文链接
http://www.cnblogs.com/real-l/
[模拟赛] GotoAndPlay的更多相关文章
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOI模拟赛 Day1
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 小奇模拟赛9.13 by hzwer
2015年9月13日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...
- PKUSC 模拟赛 day1 下午总结
下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...
- [GRYZ]寒假模拟赛
写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...
- BZOJ2741: 【FOTILE模拟赛】L
2741: [FOTILE模拟赛]L Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1170 Solved: 303[Submit][Status] ...
随机推荐
- python的爬虫代理设置
现在网站大部分都是反爬虫技术,最简单就是加代理,写了一个代理小程序. # -*- coding: utf-8 -*- #__author__ = "雨轩恋i" #__date__ ...
- 003---socket介绍
socket介绍 什么是socket? socket是应用层与tcp/ip协议族通信的中间软件抽象层,它是一组接口.在设计模式中.其实就是一个门面模式.我们无需深入理解tcp/udp协议,socket ...
- HDU 1495 非常可乐 (只是转了个弯的广搜题)
N - 非常可乐 =========================================================================================== ...
- MySQL 从入门到删库
基本操作 登陆指令 mysql -u用户名 -p密码(可以非明文输入) -h主机/IP -D端口 --prompt 提示符 修改提示符 \D 日期 \d 当前数据库 \h 服务器名 \u 用户名 // ...
- 20145202 《Java程序设计》实验五实验报告
一.实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值, ...
- Python的入坑之路(1)
(故事背景:由于涉及到机密的原因,暂时不方便透露,待后期再写.) 国庆长假过完之后,回来上班第二天下午,Boss跟龙哥把我叫了出去,问我要不要转人工智能.一脸懵逼的我,带着一脸懵逼听Boss说人工智能 ...
- Error: Error while compiling statement: FAILED: SemanticException Unable to determine if hdfs://hadoopNode2:8020/user/hive/warehouse/test is encrypted...
1.发现问题: 在hive客户端或者beeline查询hive表时候报错: 根据报错信息查看,是在集群namenode做了HA之后,产生的hdfs路径不对的问题: 2.解决问题,修改hive元数据my ...
- 基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上)
基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上) 上周BOSS给分配任务让实现一下Mysql数据库的主从复制以及读写分离,然后花了一盏茶的功夫进行了调研,发现主从复制数据库进行一番 ...
- ant-design 实现一个登陆窗口
前提:已经完成项目实战(https://ant.design/docs/react/practical-projects-cn#定义-Model) 如果要想实现一个登陆窗口,首先得有一个ui,想到的是 ...
- python接口自动化: CAS系统验证,自动完成登录并获取token,遇到302请求重定向设置(requests模块 allow_redirects=False)即可
import requestsimport re import requests import re class Crm_token(object): try: username=int(input( ...