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 。

样例输入:

2 1
1 2
2
1 1  
1 2

样例输出:

Yes
No

黑白染色,从一开始黑白染色,显然颜色相同就能从一个到另一个休息

那么我们发现两个相邻节点颜色相同,就说明黑白互通了,那么说明可以输出Yes

满足以上条件则flag=1

如果flag=0且a的颜色不等于b则输出No

这里给出原题题解参考:

%%%%%YZD  OTZ

考虑如果给出的图是二分图,那么我们任定起点,无论跳跃多少次始终只能到达与起点在同一边的点,对于>1个点的连通图而言,显然是有点不能够“休息”到的。

考虑如果给出的图不是二分图,那么图内必然存在奇环。就算除该奇环外的部分属于二分图,只要在其中的某一边的所有点上休息过后,在奇环上绕一圈再出去就能够到达另一边的点。因此能够达到目标。

我们把回答转化成二分图的判定之后,再来考虑询问如何处理。

首先最暴力的做法是每次读入一条边之后和原图一起再做一次二分图判定。

由于每次都是在原图的基础上加一条边的,所以每次对于原图部分的判定显得尤其浪费。我们可以往保留原图信息的方向考虑这个问题。

我们对原图进行二分图染色,如果它不是二分图,那么加入任何边都不可能使它重新变回二分图,因此只要输出q个“Yes”即可。

接下来我们所讨论的都是原图是二分图的情况。

我们考虑读进来的一条边(x, y),如果x和y在原图上属于同一种颜色,那么加上这条边相当于在二分图的同侧点间加了一条边,破坏了二分图的性质,因此输出“Yes”

否则如果属于不同的颜色,相当于在二分图的两侧间连了一条边,它还是个二分图,因此输出“No”

这样的方法刚开始可以用Bfs预处理,每次回答询问是O(1)的

因此时间复杂度为O(m + q)

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Node
{
int next,to;
}edge[];
int num,head[],n,m,q,vis[];
bool flag;
void add(int u,int v)
{
num++;
edge[num].next=head[u];
head[u]=num;
edge[num].to=v;
}
void dfs(int x)
{int i;
for (i=head[x];i;i=edge[i].next)
{
int v=edge[i].to;
if (vis[v]==)
{
if (vis[x]==)
vis[v]=;
else vis[v]=;
dfs(v);
}
else
{
if (vis[x]==vis[v])
{
flag=;
}
}
}
}
int main()
{int i,x,y;
cin>>n>>m;
for (i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
add(x,y);add(y,x);
}
vis[x]=;
dfs();
cin>>q;
while (q--)
{
scanf("%d%d",&x,&y);
if (vis[x]==vis[y])
{
printf("Yes\n");
}
else if (flag) printf("Yes\n");
else printf("No\n");
}
}

GotoAndPlay的更多相关文章

  1. FLASH CC 2015 CANVAS 中 gotoAndStop、gotoAndPlay() 不起作用

    哎 话不多说先看我的代码: //舞台上 放着sp0.sp1....sp8,9个mc,每个mc都有几帧, //帧上有如下代码 var S=this; S.stop() inIt1();//not wor ...

  2. [模拟赛] GotoAndPlay

    GotoAndPlay 10月3日,在杭州市西湖景区,一只小松鼠不停地接受一道道食物,花生. 玉米.饼干,可谓来者不拒,憨态可掬的模样吸引了众多围观者... Description 小松鼠终于吃撑了, ...

  3. [No000070]Flash与C#通信

    注册控件 首先要插入Flash就必须使用Flash控件,在工具栏右键选择"选择项…",然后在"COM组件"面板下点击"浏览"按钮,在本机电脑 ...

  4. createjs学习二之flash转canvas学习1

    设置发布 或者 导出参数设置 c_lib_main c_images_main/ 导出之后的文件 打开导出的html文件可以看到如下,,可以正常显示的,,只是stop了还不能动 给舞台上某一元素添加点 ...

  5. FlasActionScript3随学随机

    1.跳转页面代码.下载代码(new URLRequest(下载地址)): var request1:URLRequest=new URLRequest("http://www.baidu.c ...

  6. SpriteSheet精灵动画引擎

    SpriteSheet精灵动画引擎   本文介绍Flash中SpriteSheet精灵序列图与其它渲染方式的性能对比.SpriteSheet的原理及注意实现,最后实现了一个精灵序列图的渲染引擎.本文的 ...

  7. (转)as3效率优化

    1.改进算法无论对于那一种程序,好的算法总是非常重要的,而且能够极大地提高程序性能,所以任何性能的优化第一步就是从算法或者说程序逻辑的优化开始,检查自己的程序是否有多余的运算,是否在没有必要的时候做了 ...

  8. FLASH CC 2015 CANVAS (五)loading的制作

    注意 此贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误! 正式教程会在后续开始更新 AS3的loading一般我们都写在时间轴第一帧,但是FLASH CC CANVAS的导出项目的lo ...

  9. 集成骨骼动画Spine的几点经验

    最近开始用cantk做些复杂的游戏,其中一个游戏的DragonBones骨骼动画的JSON文件就达600K,导出之后显示各种不正常,可能是太复杂了,有些方面达到了DragonBones的极限.拿到官方 ...

随机推荐

  1. alpha-咸鱼冲刺day7(后续一波)-紫仪

    总汇链接 一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 正在写登陆+注册ing 注册搞出来了!!!!!!!!QAQ(喜极而泣!!!!.jpg) 四,问题困难 数据流程大概是搞 ...

  2. C语言第一次博客作业---顺序机构基础练习

    一.PTA实验作业 题目1.温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1.实验代 ...

  3. 实验MyOD

    实验MyOD 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 提交测试代码和运行结果截图,加上学号水印,提交码云代码链接. 代码如下: (刚开始 ...

  4. Beta冲刺-用户测试报告

    一.项目概述 1.1项目名称 高校学生征信系统 1.2项目简介 此项目基于SSH框架,力图为学生提供征信服务和信用相关的借款和申请活动.其中以信用统计和管理为主,信用使用为辅,构建出一个集信用收集和使 ...

  5. Ubuntu下tomcat或eclipse启动提示没有java环境问题

    tomcat和eclipse默认使用了openjdk,通过压缩包安装的jdk无法被识别,通过修改tomcat/bin下的catalina.sh添加jdk和jre路径即可 sudo gedit cata ...

  6. Vim 中文社区:期待你的加入

    我们的愿景 Vim 中文社区一直比较零散,缺少凝聚力,现有的一些群经常也是水的可以的,讨论各种无关紧要的内容,于是导致很大一部分人,将这些群丢入了群助手,渐渐地他们也淡出了 vim 中文社区. 而我理 ...

  7. [知识梳理]课本3&9.1

    函数:关键词:参数.返回值.函数返回类型.函数体. 函数按照返回类型,可以分为有参函数和无参函数. 函数根据是否有返回值,可以分为返回值函数和非返回值函数.     函数的定义:函数的定义可以放在任意 ...

  8. 为SRS流媒体服务器添加HLS加密功能(附源码)

    为SRS流媒体服务器添加HLS加密功能(附源码) 之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的叫做 ...

  9. 开发者的如何优雅的使用OSX

    Mac对于IT开发者来说是最好的开发工具,没有之一. 但是对于大部分人来说,第一个接触的PC操作系统都是Windows系统,此文将带大家优雅的快速学习和使用Mac的OSX系统. 1. 从键盘说起 Ma ...

  10. 阿里云CentOS部署小笔记

    快毕业了,我用近两周的时间完成了一个nodeJs+Vue-Cli+Mysql的毕业设计,到了部署的时候了. 然而,博主使用Linux的经验有限得很,所以只能自己慢慢地填坑了. 一.准备工作 1)阿里云 ...