HDU 1269 迷宫城堡(DFS)
迷宫城堡
1 2
2 3
3 1
3 3
1 2
2 3
3 2
0 0
No
#include <set>
#include <cmath>
#include <queue>
#include <vector>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ms(a) memset(a,0,sizeof(a))
#define msp memset(mp,0,sizeof(mp))
#define msv memset(vis,0,sizeof(vis))
using namespace std;
int n,m;
bool vis[];
set<int> s[];
void dfs(int ori,int x)
{
set<int>::iterator it;
vector<int> v;
for(it=s[x].begin();it!=s[x].end();it++)
v.push_back(*it);
vector<int>::iterator itv;
for(itv=v.begin();itv!=v.end();itv++)
{
if(vis[*itv])continue;
//如果要搜索的房间比起点房间编号小,说明那个房间已经搜索过了
//这时,只要把那个房间的所有能走到的房间insert一遍就行了
/*//这个剪枝有问题
if(*itv<ori)
{
for(it=s[*itv].begin();it!=s[*itv].end();it++)
{
if(*it==ori)continue;
s[ori].insert(*it);
}
continue;
}
*/
s[ori].insert(*itv);
vis[*itv]=;
dfs(ori,*itv);
}
}
int main()
{
while(cin>>n>>m&&(n||m))
{
while(m--)
{
int a,b;
cin>>a>>b;
s[a].insert(b);
}
bool flag=;
for(int i=; i<=n; i++)
{
if((int)s[i].size()==n-)continue;
msv;
vis[i]=;
dfs(i,i);
//剪枝,如果某个房间不能走到其他所有房间,
//就没有继续搜索的意义了
if((int)s[i].size()!=n-)
{
flag=;
break;
}
}
for(int i=;i<=n&&flag;i++)
{
if((int)s[i].size()!=n-)
{
flag=;
}
}
if(flag)printf("Yes\n");
else printf("No\n");
for(int i=;i<=n;i++)
s[i].clear();
}
return ;
}
HDU 1269 迷宫城堡(DFS)的更多相关文章
- HDU 1269 迷宫城堡(强连通)
HDU 1269 迷宫城堡 pid=1269" target="_blank" style="">题目链接 题意:中文题 思路:强连通模板题 代 ...
- hdu 1269 迷宫城堡
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1269 迷宫城堡 Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个 ...
- HDU 1269.迷宫城堡-Tarjan or 双向DFS
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu 1269 迷宫城堡 强连通分量
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU 1269 迷宫城堡(判断有向图强连通分量的个数,tarjan算法)
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu 1269 迷宫城堡 最简单的联通图题 kosaraju缩点算法
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Des ...
- hdu 1269 迷宫城堡(Targin算法)
---恢复内容开始--- 迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HDU 1269 迷宫城堡 (Kosaraju)
题目链接:HDU 1269 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000), ...
- HDU 1269 迷宫城堡(向量)(Tarjan模版题)
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
随机推荐
- 实现WebService的调用与被调用
之前一直用WCF来开发服务,可是从未用过WebService.对WebService有种很神奇的期待,都说WebService比较简单,但是从未用过就对我来说就是一种新的知识.起始让我来说WCF与We ...
- UNIX基础知识--<<UNIX 环境编程>>读书笔记
1 shell程序就是位于应用软件与系统调用之间的程序 每个用户登录系统,系统就会为用户分配shell (用户的登录的口令文件 在 /etc/passwd 2 ls filename 运行原理 ...
- SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY
SCOPE_IDENTITY.IDENT_CURRENT 和 @@IDENTITY SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY.IDENT_CUR ...
- C#制作高仿360安全卫士窗体3
C#制作高仿360安全卫士窗体(三) 距上篇C#制作高仿360安全卫士窗体(二)也将近一个多月了,这个月事情还是像往常一样的多.不多我也乐在其中,毕竟我做的是我喜欢做的东西.今天特地抽空把怎么制作 ...
- CSS hack大全&详解(什么是CSS hack)
1.什么是CSS hack? 本文转自程序园学院:http://www.kwstu.com/Admin/ViewArticle/201409011604277330 CSS hack是通过在CSS样式 ...
- Java笔记:String类
1.String类是不可变类,一旦一个String对象被创建以后,包含在这个对象中的字符序列式不可改变的,直至这个对象被销毁. String s1 = "java"; s1 = s ...
- python cookbook学习1
python cookbook学习笔记 第一章 文本(1) 1.1每次处理一个字符(即每次处理一个字符的方式处理字符串) print list('theString') #方法一,转列表 结果:['t ...
- [转载]expect spawn、linux expect 用法小记
原文地址:expect spawn.linux expect 用法小记作者:悟世 使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写 ...
- 设置Linux可以查看历史命令的执行时间
大家都知道Linux平台上,可以通过history命令查看最近所执行过的命令,但history命令默认所显示的只有编号和命令的,只知道命令是最近所执行的,但不知具体执行的日期.时.分.秒,有时给寻找证 ...
- zoj 1152 A Mathematical Curiosity
方法:枚举 做这道题,在第十行的位置WA了很多次,(n || m)不能写成(n + m),m可能是负数,一直没注意到,导致不停的WA....... #include <stdio.h> i ...