判断一个有向图是否有环
来源:互联网 发布:西安高新区软件公寓 编辑:程序博客网 时间:2024/04/28 18:14
Description
给出一个有向图,判断图中是否存在回路。
Input
第1行:输入图的顶点个数N(1 ≤ N≤ 2,500)和C(图的边数,1 ≤ C ≤ 6,200);
第2到C+1行中,第i+1行输入两个整数,分别表示第i条边的起点和终点的编号。
Output
如果图中存在回路,输出“YES”,否则,输出“NO”。
Sample Input
7 8
1 2
1 3
2 4
2 6
3 4
4 5
5 2
5 7
Sample
YES
大致的思路是深搜,将深搜的点加一个特殊标记,如果从当前的点往下搜的时候,发现了这个特殊标记,立刻判定有环。
代码如下
#include<cstdio>#include<cstring>int n,c,a[2600][2600],vis[2600],swi;int dfs(int v){ vis[v] = -1; for(int i = 1; i <= n; i++) { if(a[v][i] != 0 && !vis[i]) { dfs(i); vis[i]=1; } if(a[v][i] != 0 && vis[i] == -1){ printf("YES\n"); swi=true; return true; } } return false;}int main(){ memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis)); swi=false; scanf("%d %d",&n,&c); int r1,r2; for(int i=0;i<c;++i){ scanf("%d %d",&r1,&r2); a[r1][r2]=1; } dfs(1); if(!swi) printf("NO\n");}
- 判断一个有向图是否有环
- 判断一个有向图是否有环
- 判断有向图是否有环
- 判断有向图是否有环
- 有向图判断是否有环
- 判断有向图是否有环
- 判断有向图是否有环
- 判断一个图是否有环 无向图 有向图
- 判断一个图是否有环 无向图 有向图
- 判断一个图是否有环 无向图 有向图
- 判断一个图是否有环 无向图 有向图
- 判断一个图是否有环(有向图,无向图)
- 判断一个图是否有环(有向图,无向图)
- 判断一个图是否有环 无向图 有向图
- 判断一个图(无向图和有向图)是否有环
- 判断一个图是否有环 无向图 有向图
- 判断一个图是否有环(无向图、有向图)
- 判断一个图是否有环 无向图 有向图
- 12个有趣的C语言面试题
- 如何成为一名程序员
- 内存管理
- Poj 3348 Cows (凸包面积)
- 如何彻底关闭Windows7自动更新——图文详解
- 判断一个有向图是否有环
- 基于Chrome开源提取的界面开发框架开篇
- 2012.12.21
- Codeforces Problemset 39A
- Chrome 源码剖析(一)
- webservice快速入门-SOAP和WSDL(三)
- Chrome源码剖析【二】
- Chrome源码剖析【三】
- 整理下最近写java一个小界面程序的知识整理