POJ 2367 (裸拓扑排序)

http://poj.org/problem?id=2367

题意:给你n个数,从第一个数到第n个数,每一行的数字代表排在这个行数的后面的数字,直到0。

这是一个特别裸的拓扑排序的一个题目,拓扑排序我也是刚刚才接触,想法还是挺简单的。实现起来也不复杂。

 1 #include <stdio.h>
 2 #include <string.h>
 3
 4 int Indegree[101],n;
 5
 6 bool mp[101][101];
 7
 8 int topsort()
 9 {
10     for(int i=1;i<=n;i++)
11         for(int j=1;j<=n;j++)     //遍历n次,找到第一个度为0的点,度为0的点,即排在这个点前面的点要么是没有,要么是已经输出了。
12         {
13             if(Indegree[j]==0)
14             {
15                 Indegree[j]--;
16                 printf("%d",j);
17                 if(i!=n) printf(" ");
18                 else printf("\n");
19                 for(int k=1;k<=n;k++)       //排在这个度为0后面的点,度都可以相应的减一,因为在它们的前面的点已经少了一个。
20                 {
21                     if(mp[j][k]) Indegree[k]--;
22                 }
23                 break;
24             }
25
26         }
27     return 0;
28 }
29
30
31
32 int main()
33 {
34   //  freopen("in.txt","r",stdin);
35     int x;
36     scanf("%d",&n);
37     memset(mp,false,sizeof(mp));
38     for(int i=1;i<=n;i++)
39     {
40         while(scanf("%d",&x),x)
41         {
42             mp[i][x]=true;
43             Indegree[x]++;
44         }
45     }
46
47     topsort();
48     return 0;
49 }
时间: 2024-11-07 13:55:57

POJ 2367 (裸拓扑排序)的相关文章

Genealogical tree POJ 2367【拓扑排序】

http://poj.org/problem?id=2367 Genealogical tree Special Judge Problem Description The system of Martians' blood relations is confusing enough. Actually, Martians bud when they want and where they want. They gather together in different groups, so th

HDU 3342 -- Legal or Not【裸拓扑排序 &amp;&amp;水题】

Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5906    Accepted Submission(s): 2734 Problem Description ACM-DIY is a large QQ group where many excellent acmers get together. It is

【POJ 2186】拓扑排序

题意 给出n,代表有以A开始的n个字母,给出它们的m个小于关系(A<B).如果前i个关系可以确定n个字母的一个顺序就输出: Sorted sequence determined after i relations: 排好的字母. 如果前i个关系开始导致矛盾,就输出: Inconsistency found after i relations. m个关系后还不能确定顺序就输出: Sorted sequence cannot be determined. 代码 /* g[i][j]为邻接矩阵,e[i

杭电ACM1285----确定比赛名次『拓扑排序』

1 //裸拓扑排序,注意先输出比较小的数,使用优先队列即可 2 #include <cstdio> 3 #include <vector> 4 #include <cstring> 5 #include <queue> 6 #include <algorithm> 7 using namespace std; 8 const int maxn = 505; 9 vector<int> v[maxn]; 10 priority_queu

图论排序---拓扑排序

定义 对于有向无权无环图,进行拓扑排序 实现方式 Kahn算法 基于DFS的拓扑排序算法 Kahn算法 优化前时间复杂度O(\(n^{2}\)) 排序的过程 1.对于DAG,先输出没有前驱的点 2.把与前驱相关的边删除 3.继续输出没有前驱的点 4.重复前者,直到DAG为空或者没有前驱 如果我们有如下的一个有向无环图,我们需要对这个图的顶点进行拓扑排序,过程如下: 首先,我们发现V6和v1是没有前驱的,所以我们就随机选去一个输出,我们先输出V6,删除和V6有关的边,得到如下图结果: 然后,我们继

POJ 2367 Genealogical tree 拓扑排序入门

Description The system of Martians' blood relations is confusing enough. Actually, Martians bud when they want and where they want. They gather together in different groups, so that a Martian can have one parent as well as ten. Nobody will be surpris

图论之拓扑排序 poj 2367 Genealogical tree

题目链接 http://poj.org/problem?id=2367 题意就是给定一系列关系,按这些关系拓扑排序. #include<cstdio> #include<cstring> #include<queue> #include<vector> #include<algorithm> using namespace std; const int maxn=200; int ans; int n; int in[maxn]; //记录入度

poj 2367 拓扑排序

题目链接:http://poj.org/problem?id=2367 题目大意:就是进行拓扑排序,先给你一个数n,代表1~n,对于每个数有一系列的指向,最后将这些数进行排列出来..就是简单的拓扑排序. 首先拓扑排序应该有两种实现的方法.. 一种是用dfs进行每个节点的搜索,最后进行回溯,这样的话很容易就能明白先找出来的应该是后面的数,而最后找出来的应该是之前的数,因为是回溯出来的嘛..所以可以使用一个栈来进行答案的存储,因为栈的特性就是后压入的先弹出. dfs实现的思想:利用一个数组来存储每个

POJ 2367:Genealogical tree(拓扑排序)

Genealogical tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2738 Accepted: 1838 Special Judge Description The system of Martians' blood relations is confusing enough. Actually, Martians bud when they want and where they want. They ga