hdu 迷宫城堡
来源:互联网 发布:打开db数据库 编辑:程序博客网 时间:2024/05/21 11:18
虽然没有学有向图的强连通算法,但是像这种简单题我们应该还是知道怎么做的。
但是今天的去看一下强连通图算法:
Description
为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只说明可以通过这个通道由A房间到达B房间,但并不说明通过它可以由B房间到达A房间。Gardon需要请你写个程序确认一下是否任意两个房间都是相互连通的,即:对于任意的i和j,至少存在一条路径可以从房间i到房间j,也存在一条路径可以从房间j到房间i。
Input
输入包含多组数据,输入的第一行有两个数:N和M,接下来的M行每行有两个数a和b,表示了一条通道可以从A房间来到B房间。文件最后以两个0结束。
Output
对于输入的每组数据,如果任意两个房间都是相互连接的,输出"Yes",否则输出"No"。
Sample Input
3 3
1 2
2 3
3 1
3 3
1 2
2 3
3 2
0 0
Sample Output
Yes
No
开始是想到用floyd算法---的有向图的传递闭包,其实想一想就知道会超时。后面想到用dfs:如果这个图是强连通的,那么从任意一个顶点s开始进行DFS都可以访问到图中的所有点,如果不能访问到所有点那么就说明这个图肯定不是强连通图,但能访问到所有点也并不能说明此图为强连通,只有所有点同时也能访问到这个点才说明此图为强连通图。
#include <iostream>#include<string.h>#include<stdio.h>#include<vector>using namespace std;int vis[10005],B,d,dp[10005];vector<int>g[10005];int n,m;void dfs(int x){ vis[x]=1; d+=1; int l=g[x].size(); for(int i=0; i<l; i++) { int v=g[x][i]; if(!vis[v]) { dfs(v); } }}void bfs(int x){ if(dp[x]) { B=1; return ; } if(B) return; if(x==1) { B=1; return; } vis[x]=1; int l=g[x].size(); for(int i=0; i<l; i++) { int v=g[x][i]; if(!vis[v]) { bfs(v); } }}int main(){ while(scanf("%d %d",&n,&m)&&(n+m)) { for(int i=1; i<=n; i++) g[i].clear(); memset(vis,0,sizeof(vis)); memset(dp,0,sizeof(dp)); for(int i=1; i<=m; i++) { int v,u; scanf("%d %d",&v,&u); g[v].push_back(u); } int b=1; d=0; dfs(1);//这里我的算法必须选择1点或者n点,因为n可以为1。 for(int i=1; i<=n; i++) { memset(vis,0,sizeof(vis)); B=0; bfs(i); if(B==0) b=0; else dp[i]=1; } //cout<<b<<" "<<d<<endl; if(b&&(d==n))//注意优先级问题 cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0;}
待续强连通图算法:。。。。。。。。。。。。
0 0
- hdu 1269 迷宫城堡
- HDU 1269 迷宫城堡
- HDU 1269 - 迷宫城堡
- HDU 1269 迷宫城堡
- HDU 迷宫城堡
- hdu 1269 迷宫城堡
- hdu 1269 迷宫城堡
- HDU 1269 迷宫城堡
- HDU 1269 迷宫城堡
- hdu 1269 迷宫城堡
- HDU 1269 迷宫城堡
- HDU - 1269 迷宫城堡
- hdu 1269 迷宫城堡
- hdu 1269 迷宫城堡
- hdu 1269 迷宫城堡
- 【HDU 1269】迷宫城堡
- hdu 1269 迷宫城堡
- hdu 1269 迷宫城堡
- Inxi:获取Linux系统和硬件信息的神器
- 图片相关:bigmap工具类,实现压缩、异步、并发、缓存
- CATransition类动画
- GitHub上README.md教程
- mysql 基本命令
- hdu 迷宫城堡
- 第4周项目2 -建设“单链表”算法库
- Java内部类之静态内部类
- keepalived nopreempt 失效总结
- poj 2774 后缀数组(模板题)
- 如何设置USERENV('CLIENT_INFO')的值
- Linux结合awk的“去重”思想
- JSPatch实现原理详解:让JS调用/替换任意OC方法
- 最牛X的GCC 内联汇编