图结构练习——判断给定图是否存在合法拓扑序列
来源:互联网 发布:车削中心的编程视频 编辑:程序博客网 时间:2024/05/22 08:59
图结构练习——判断给定图是否存在合法拓扑序列
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。
输入
输入包含多组,每组格式如下。
第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n<=10)
后面m行每行两个整数a b,表示从a到b有一条有向边。
输出
若给定有向图存在合法拓扑序列,则输出YES;否则输出NO。
示例输入
1 02 21 22 1
示例输出
YESNO
提示
#include<bits/stdc++.h>using namespace std;int mmap[100][100];//记录当前节点的入度数目int vis[101];//邻接矩阵int du[101];//标记当前节点是否已经访问int n,m;int TP(){int flag=0; for(int i=1;i<=n;i++) { flag=0; for(int j=1;j<=n;j++) { if(du[j]==0&&vis[j]==0) { vis[j]=-1;//避免已计算过的入度为0的结点再次被计算 for(int k=1;k<=n;k++) { if(mmap[j][k]) { du[k]--; } } flag=1; break;//找到一个入度为0的就结束 } } if(flag==0)/*如果节点未输出完,而图中就没有了入 度为0的节点,则说明有环,不合法。*/ break; } if(flag) cout<<"YES\n"; else cout<<"NO\n";}int main(){ while(cin>>n>>m) { memset(vis,0,sizeof(vis)); memset(mmap,0,sizeof(mmap)); memset(du,0,sizeof(du)); for(int i=0;i<m;i++) { int u,v; cin>>u>>v; if(!mmap[u][v])//避免输入重边 {mmap[u][v]=1; du[v]++; } } TP(); } return 0;}
0 0
- SDUT 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- SDUT2140_图结构练习——判断给定图是否存在合法拓扑序列(邻接表)
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- SDUT OJ 2140 图结构练习——判断给定图是否存在合法拓扑序列
- sdut 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- Binary Search Tree Iterator
- 关于Unity3d 使用rigidbody.velocity代替Transform.Translate()来使物体向前移动
- 《数据结构与算法分析》伸展树(自底向上)详解
- 刨根问底(二):从INode客户端看如何培养兴趣 (续)
- 聚类之详解FCM算法原理及应用
- 图结构练习——判断给定图是否存在合法拓扑序列
- Examining the Rooms - HDU 3625 第一类斯特林数
- android invalidate()和postInvalidate()的区别及使用
- HDU 小希的迷宫 (并查集)
- 实现ViewPager的回弹效果
- RabbitMQ安装不当出现的问题:TCP connection succeeded but Erlang distribution failed
- js字符串对象操作
- Keepalived+lvs+apache
- nutch学习、、孤剑之家 宝剑锋从磨砺出,梅花香自苦寒来。我欲仗剑走天涯。 博客园 首页 新随笔 联系 订阅订阅 管理 随笔 - 771 文章 - 8 评论 - 13