图结构练习——判断给定图是否存在合法拓扑序列
2014-12-04 16:36
225 查看
图结构练习——判断给定图是否存在合法拓扑序列
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。
输入
输入包含多组,每组格式如下。第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n<=10)
后面m行每行两个整数a b,表示从a到b有一条有向边。
输出
若给定有向图存在合法拓扑序列,则输出YES;否则输出NO。
示例输入
1 0 2 2 1 2 2 1
示例输出
YES NO
拓扑排序为判断有向图中是否存在回路的算法
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> using namespace std; int ma[15][15]; int n,m; int in[15];//存储某个点的入度 void tuopu() { int i,j,k; int flag; for(i=0;i<n;i++) { flag=0; for(j=0;j<n;j++) { if(in[j]==0) { flag=1; in[j]=-1; for(k=0;k<n;k++) { if(ma[j][k]) in[k]--; } break; } } if(flag==0) break; } if(flag==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; } int main() { int u,v; while(cin>>n>>m) { memset(ma,0,sizeof(ma)); memset(in,0,sizeof(in)); while(m--) { cin>>u>>v; ma[u][v]=1; in[v]++; } tuopu(); } return 0; }
相关文章推荐
- 图结构练习——判断给定图是否存在合法拓扑序列 SDUT 2140
- SDUT2140图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- SDUT 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- sdut 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- SDUT2140_图结构练习——判断给定图是否存在合法拓扑序列(邻接表)
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列(拓扑排序判断环)
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列(sdutoj)
- SDUT2140图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- SDUT OJ 2140 图结构练习——判断给定图是否存在合法拓扑序列