SDNUOJ 1089 拓扑排序
Description
给定一个有向图,若图无环,则将其进行拓扑排序并输出,否则输出IMPOSABLE。
Input
第一行为两个整数n(1<=n<=1000)、m(1<=m<=100000); 之后m行,每行两个整数a、b(0 < a, b <= n)表示一条从a到b的有向边。
Output
若存在环,输出IMPOSABLE,否则输出一行用一个空格隔开的拓扑排序的结果,若存在多个结果,输出字典序最小的。
Sample Input(自写)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Sample Output
1 2 3 4 5
IMPOSABLE
做题过程
原来的判环与输出结果都没问题,但要输出字典序最小的!我想了个办法:
邻接表存的时候按顺序放:
- 1
- 2
但TLE了
用priority_queue一点点存:
RE了:
把模板搬过来没改数据范围,改完了交上
WA了:
对拍发现:有环时输出IMPOSABLE(可实施的、可强制的)而不是IMPOSSIBLE(不可能的)
最后AC了。
Code
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67