数据结构实验之图论十:判断给定图是否存在合法拓扑序列
来源:互联网 发布:cf咪咕刷枪软件 编辑:程序博客网 时间:2024/06/03 20:27
数据结构实验之图论十:判断给定图是否存在合法拓扑序列
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。
Input
输入包含多组,每组格式如下。
第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n<=10)
后面m行每行两个整数a b,表示从a到b有一条有向边。
Output
若给定有向图存在合法拓扑序列,则输出YES;否则输出NO。
Example Input
1 02 21 22 1
Example Output
YESNO
判断有没有环的结构,所以我们只需要遍历一遍一次删掉入度为0的节点,当然不要忘记这时候会对与它相连的节点有影响,依次进行,如果最后没有节点则不存在环,有一个合法的拓扑排序序列,否则就存在环的结构。
#include<bits/stdc++.h>using namespace std;int bfs[20][20];bool visit[20];int du[30];int main(){ int n,m,i,j,k; int u,v; while(cin>>n>>m&&n) { int cut=n; memset(bfs,0,sizeof(bfs)); memset(visit,false,sizeof(visit)); memset(du,0,sizeof(du)); while(m--) { cin>>u>>v; bfs[u][v]=1; du[v]++; } for(i=1;i<=n;i++)///遍历所有的点 { for(j=1;j<=n;j++)///寻找入度为0的点 { if(du[j]==0&&visit[j]!=true) { visit[j]=true; cut--; for(k=1;k<=n;k++) { if(bfs[j][k]==1) { du[k]--;///与这个删掉的入度为0的点相关的入度删掉 } } break; } } } if(cut==0) { cout<<"YES"<<endl; } else { cout<<"NO"<<endl; } } return 0;}
阅读全文
0 0
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 2140 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论八:欧拉回路
- 正在进行的激光雷达“世界大战”中,Axetomahawk先行一步
- 12月6日
- 编译原理——词法分析
- Java调用jama实现矩阵运算
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- Spring MVC自定义数据绑定--HandlerMethodArgumentResolver
- Java之二元运算
- 【每日一题(14)】函数F(x) HRBUST
- linux-命令sed 使用技巧
- Django-模型
- 安卓简易理财
- 169. Majority Element
- html 标签a 如何跳出iframe