数据结构实验之图论十:判断给定图是否存在合法拓扑序列
来源:互联网 发布:js奇偶数判断的代码 编辑:程序博客网 时间:2024/05/22 05:14
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
code:
#include <stdio.h>
#include <string.h>
int map[16][16];
int visit[16];
int in[16];//表示某点入度的数量;
int n, m;
void toport()
{
int flag;
for(int i = 1;i<=n;i++)//遍历每一个节点的入度与后继;
{
flag = 0;
for(int j = 1;j<=n;j++)
{
if(!visit[j]&&!in[j])//该点没有走过并且入度为0,以此为起点;
{
visit[j] = 1;
for(int k = 1;k<=n;k++)//以此点为前驱的所有后继失去一个前驱,以此循环,直到将入度为0的点全部读完;
{
if(map[j][k])
{
in[k]--;
}
}
flag = 1;//若还剩下入度不为0的,说明有部分是成环的,直接跳出有环的不为拓扑
break;
}
}
}
if(flag == 0) printf("NO\n");
else printf("YES\n");
}
int main()
{
while(~scanf("%d%d", &n, &m))
{
if(m == 0)
{
printf("YES\n");
continue;
}
memset(map, 0, sizeof(map));
memset(visit, 0, sizeof(visit));
memset(in, 0, sizeof(in));
while(m--)
{
int a, b;
scanf("%d%d", &a, &b);
map[a][b] = 1;
in[b]++;
}
toport();
}
}
#include <string.h>
int map[16][16];
int visit[16];
int in[16];//表示某点入度的数量;
int n, m;
void toport()
{
int flag;
for(int i = 1;i<=n;i++)//遍历每一个节点的入度与后继;
{
flag = 0;
for(int j = 1;j<=n;j++)
{
if(!visit[j]&&!in[j])//该点没有走过并且入度为0,以此为起点;
{
visit[j] = 1;
for(int k = 1;k<=n;k++)//以此点为前驱的所有后继失去一个前驱,以此循环,直到将入度为0的点全部读完;
{
if(map[j][k])
{
in[k]--;
}
}
flag = 1;//若还剩下入度不为0的,说明有部分是成环的,直接跳出有环的不为拓扑
break;
}
}
}
if(flag == 0) printf("NO\n");
else printf("YES\n");
}
int main()
{
while(~scanf("%d%d", &n, &m))
{
if(m == 0)
{
printf("YES\n");
continue;
}
memset(map, 0, sizeof(map));
memset(visit, 0, sizeof(visit));
memset(in, 0, sizeof(in));
while(m--)
{
int a, b;
scanf("%d%d", &a, &b);
map[a][b] = 1;
in[b]++;
}
toport();
}
}
阅读全文
0 0
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 2140 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- LINUX中常用操作命令
- 瑞士网银Swissquote发布比特币交易所交易产品
- javaScript基本语法
- opencv-pyehon(16):直方图计算绘制与分析
- java涨姿势--反射知识篇
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 任意进制转换
- 京东京麦开放平台的高可用架构之路
- EasyDemo*常用API体系结构图(download pic Thx)
- codeforces-894C Marco and GCD Sequence
- 【Scikit-Learn 中文文档】优化估计器的超参数
- Tensorflow CIFAR-10训练例子报错解决
- 朴素贝叶斯分类Naive Bayesian
- Single Number III