1356: Catch

Time Limit: 2 Sec  Memory Limit: 128 MB
Submit:
96  Solved: 40
[Submit][Status][Web
Board
]

Description

A thief is running away!
We can consider
the city where he locates as an undirected graph in which nodes stand for
crosses and edges stand for streets. The crosses are labeled from 0 to N–1.

The tricky thief starts his escaping from cross S. Each moment he moves to
an adjacent cross. More exactly, assume he is at cross u at the moment t. He may
appear at cross v at moment t + 1 if and only if there is a street between cross
u and cross v. Notice that he may not stay at the same cross in two consecutive
moment.
The cops want to know if there’s some moment at which it’s possible
for the thief to appear at any cross in the city.

Input

The input contains multiple test cases:
In
the first line of the input there’s an integer T which is the number of test
cases. Then the description of T test cases will be given.
For any test
case, the first line contains three integers N (≤ 100 000), M (≤ 500 000), and
S. N is the number of crosses. M is the number of streets and S is the index of
the cross where the thief starts his escaping.
For the next M lines, there
will be 2 integers u and v in each line (0 ≤ u, v < N). It means there’s an
undirected street between cross u and cross v.

Output

For each test case, output one line to tell
if there’s a moment that it’s possible for the thief to appear at any cross.
Look at the sample output for output format.

Sample Input

2
3 3 0
0 1
0 2
1 2
2 1 0
0 1

Sample Output

Case 1: YES
Case 2: NO

HINT

For the first case, just look at the table below. (YES means the thief may appear at the cross at that moment)

For the
second input, at any moment, there’s at least one cross that the thief can’t
reach.

 
题意:T组测试数据
n,m  ,S   代表n个节点 下表0~n-1 ;  m条边。s代表起始点。
有个人,在s点走,记为moment 0 ,此时只可能出现在s点。
下一刻,只能到其相邻的点,不能在原地不动。
 
问是否满足,有一时刻,他可能出现在任何一点。
 
思路:对于某一个,如果它能在奇数时间,和偶是时间到达的话,就满足条件。
        问题转化为寻找一个奇数环,来延迟时间。切换奇偶时间。
 #include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std; vector<int>Q[];
int num[];
int vis[];
bool use[];
queue<int>H; void add(int x,int y)
{
num[x]++;
Q[x].push_back(y);
}
bool bfs(int start)
{
int i,cur,now,x;
H.push(start);
use[start]=true;
vis[start]=;
while( !H.empty() )
{
x=H.front();
H.pop();
cur=vis[x];
if(cur==) cur=;
else if(cur==) cur=; for(i=;i<num[x];i++)
{
now=Q[x][i];
if(use[now]==true)
{
if( (vis[now]==&&cur== ) || ( vis[now]== && cur== ))
{// 我很奇怪,为什么if( vis[now]!=cur)就错了,
//照理说,我的vis[now]的值已经被修改过的,不是-1.
return true;
}
continue;
}
vis[now]=cur;
use[now]=true;
H.push(now);
}
}
return false;
}
int main()
{
int T,n,m,s,t;
int i,x,y;
scanf("%d",&T);
for(t=;t<=T;t++)
{
scanf("%d%d%d",&n,&m,&s);
memset(num,,sizeof(num));
memset(vis,-,sizeof(vis));
memset(use,false,sizeof(use));
for(i=;i<=n;i++)
Q[i].clear();
for(i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
printf("Case %d: ",t);
if( bfs(s) ==true)
printf("YES\n");
else printf("NO\n");
}
return ;
}

csu 1356 Catch bfs(vector)的更多相关文章

  1. STL--向量(vector)

    STL的组成 标准模板库STL关注的重点是泛型数据结构和算法,其关键组成部分是容器(containers).算法(algorithms).迭代器(iterators).函数对象(Function Ob ...

  2. R语言编程艺术# 数据类型向量(vector)

    R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...

  3. STL标准模板库 向量容器(vector)

    向量容器使用动态数组存储.管理对象.因为数组是一个随机访问数据结构,所以可以随机访问向量中的元素.在数组中间或是开始处插入一个元素是费时的,特别是在数组非常大的时候更是如此.然而在数组末端插入元素却很 ...

  4. List接口的实现类(Vector)(与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多。)

      LinkedList提供以下方法:(ArrayList无此类方法) addFirst();    removeFirst();   addLast();   removeLast(); 在堆栈中, ...

  5. R语言编程艺术#01#数据类型向量(vector)

    R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...

  6. 对ArrayList(Vector)的排序

    当需要对ArrayList(Vector)里面的元素进行简单的排序时,可以使用Collections.sort();这个方法 import java.util.ArrayList; import ja ...

  7. Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动

    如果我们习惯于数学坐标系,那么对于Silverlight中的坐标系可能会有些不习惯.因为在Silverlight中的坐标系与Flash中的坐标系一样,一切都的颠倒的.在标准的数学坐标系中,X轴表示水平 ...

  8. 获取一个数组(vector)与查找值(value)的差最小绝对值的成员索引的算法

    代码如下: 函数作用:传递进来一个数组(vector),和一个需要查找的值(value),返回与value的差值绝对值最小的vector成员索引,若value不在vector范围中,则返回-1: in ...

  9. BFS(二):数的变换

    [例1]整数变换(POJ 3278 “Catch That Cow”) 给定两个整数a和b(0 ≤a,b≤100,000),要求把a变换到b.变换规则为:(1)当前数加1:(2)当前数减1:(3)当前 ...

随机推荐

  1. Java几个基本概念

    To xj 编译:test.java->test.class反编译:test.class->test.java打jar包:test.class->test.jar打war包:test ...

  2. Cannot sending data from mongodb into elasticsearch using logstash

    Question: Hi all, i have an issue when i try to get data from mongodb to elasticsearch using logstas ...

  3. jvm字节码简介

    1.概述 java虚拟机的指令由一个字节长度的.代表着某种特定操作含义的数字(成为操作码,Opcde)和跟随其后的0到多个此操作所需参数(操作数,Operands).由于操作码的长度为一个字节,所以指 ...

  4. mysql工具——perror(mysql错误代码,查看错误号释义)

    mysql工具——perror(mysql查看错误代码,查看错误号释义) 关键词:mysql错误代码,mysql错误号,perror

  5. 阿里云 下载的 apache 证书 转换为 pcks8 证书

    第一步: 百度 搜索  rsa 转 pcks8 将 .key 文件 转换成 pcks8.key . 第二部: 将 chain.crt 的 内容 复制到 public.crt 下方.. 新的 publi ...

  6. java防范跨站脚本攻击(XSS)

    网络中心提示网站有数目众多的跨站脚本攻击(XSS)漏洞,经过查看代码,认为是JSP中绑定变量是未经处理直接写入的,而且整个项目中这样的做法太多,因为是多年前的,不好一个个更改,参照网上资料,通过加fi ...

  7. 9. Javascript学习笔记——表单处理

    9. 表单处理 9.1 表单的基础知识 ///表单用 <form> 元素表示,对应的是 HTMLFormElement 类型,继承自 HTMLElement. //属性:action.me ...

  8. hdu 3709 Balanced Number(平衡数)--数位dp

    Balanced Number Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  9. 【Three.js】如何选中外部模型

    1.问题 three.js中模型选中使用的是射线法,根据摄像机角度,鼠标点击位置和模型选中的distance参数判断来选中模型.对于原生的矢量模型完全没有问题,但是当遇到导入的外部模型,如obj.st ...

  10. python爬虫常用之Scrapy 中间件

    一.概述 1.中间件的作用 在scrapy运行的整个过程中,对scrapy框架运行的某些步骤做一些适配自己项目的动作. 例如scrapy内置的HttpErrorMiddleware,可以在http请求 ...