2140=数据结构实验之图论十:判断给定图是否存在合法拓扑序列

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 int map[100][100],visited[100],du[100],flag,n,m,i,j,k;
 5 int main()
 6 {
 7     while(~scanf("%d %d",&n,&m))
 8     {
 9         memset(map,0,sizeof(map));
10         memset(visited,0,sizeof(visited));
11         memset(du,0,sizeof(du));
12         while(m--)
13         {
14             int a,b;
15             scanf("%d%d",&a,&b);
16             map[a][b]=1;
17             du[b]++;
18         }
19         for(i=1; i<=n; i++)
20         {
21             flag=0;
22             for(j=1; j<=n; j++)
23             {
24                 if(visited[j]==0&&du[j]==0)
25                 {
26                     visited[j]=1;
27                     for(k=1; k<=n; k++)
28                     {
29                         if(map[j][k]==1)
30                             du[k]--;
31                     }
32                     flag=1;
33                     break;
34                 }
35             }
36         }
37         if(flag==1)printf("YES\n");
38         else printf("NO\n");
39     }
40     return 0;
41 }

原文地址:https://www.cnblogs.com/Angfe/p/11783568.html

时间: 2024-11-09 02:31:07

2140=数据结构实验之图论十:判断给定图是否存在合法拓扑序列的相关文章

图结构练习——判断给定图是否存在合法拓扑序列

图结构练习——判断给定图是否存在合法拓扑序列 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 #inc

图结构练习——判断给定图是否存在合法拓扑序列(sdutoj)

#include<stdio.h>#include<string.h>int d[15],map[15][15],vis[15];int main(){    int i,j,k,f,n,m,u,v;    while(~scanf("%d%d",&n,&m))    {        memset(d,0,sizeof(d));        memset(map,0,sizeof(map));        memset(vis,0,size

SDUT OJ 2140 图结构练习——判断给定图是否存在合法拓扑序列

#include<iostream> #include<memory.h> using namespace std; int tp[11][11],visit[11]; int main() { int n,m,i,j,k,s,o,c; int flag,count,a,b; while(cin>>n>>m) { s=1; o=0; count=0; memset(tp,0,sizeof(tp)); memset(visit,0,sizeof(visit))

拓扑排序 判断给定图是否存在合法拓扑序列 自家oj1393

1 //拓扑排序判断是否有环 2 #include<cstdio> 3 #include<algorithm> 4 #include<string.h> 5 #include<math.h> 6 #include<queue> 7 using namespace std; 8 typedef long long ll; 9 const int maxn=1e2+10; 10 int G[maxn][maxn]; 11 int in[maxn];

图结构练习——推断给定图是否存在合法拓扑序列(拓扑排序推断环)

图结构练习--推断给定图是否存在合法拓扑序列 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

数据结构学习笔记(十)-图的最小生成树与拓扑排序

一.最小生成树 首先应该理解最小生成树的定义: 包含图的所有顶点,V-1条边 没有回路 边的权重和最小 那么实际问题中用到最小生成树是什么时候呢?很多人都觉得学习算法没用,在实际生活工作中根本就用不上,其实并不是用不上,只是你根本没有想到要去用而已!使用了算法后你就会发现事情原来可以这么简单高效! 实际中如需要使用最少的电线给一栋房子安装电路.就可以用最小生成树解决. 1. Prim算法 该算法利用了贪心的思想,大体上与dijkstra算法类似,都需要对每一个顶点保存一个距离值dv和pv,以及一

SDUT 3364 数据结构实验之图论八:欧拉回路

数据结构实验之图论八:欧拉回路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来. 能否走过这样的七座桥,并且每桥只走一次?瑞士数学家欧拉最终解决了这个问题并由此创立了拓扑学.欧拉通过对七桥问题的研究,不仅圆满地回答了哥尼斯堡七桥问题,并证明了更为广泛的有关一笔画的三条结论,人们通常称之为欧拉定理.对于一个连通图,通常把

SDUT 3361 数据结构实验之图论四:迷宫探索

数据结构实验之图论四:迷宫探索 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关:请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点? Input 连续T组数据输入,每组数据第一行给出三个正整数,分别表示地下迷宫的结点数N(1 < N <= 1000).边数M(M <= 30

数据结构实验之图论二:基于邻接表的广度优先搜索遍历

数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列.(同一个结点的同层邻接点,节点编号小的优先遍历) 输入 输入第一行为整数n(0< n <100),表示数据的组数. 对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,