#P8066. [BalkanOI 2012] Fan Groups

[BalkanOI 2012] Fan Groups

题目背景

BOI 世界杯即将开始,有球迷们在城市中宣传他们支持的队伍。

题目描述

nn 个城市广场(标记为 11nn)和其中一些之间的 mm 条单向街道,每个广场上初始有一群球迷(每个广场上的球迷支持不同球队)。

nn 群球迷按照某个特定的顺序进行以下操作:

  • 占领他们所在的广场(如在 11 广场的人会先占领 11 广场)。
  • 从他们占领的某个广场 uu 出发,走到与其相邻的每个广场 vv。如果广场 vv 已经被人占领,他们会在边 (u,v)(u,v) 上发生冲突,并不再在这个方向上前进;否则,他们会占领广场 vv,并重复这一步,直到没有能到达的广场为止。
  • 如果他们所在的广场在此前被别的人群占领,他们不会与那群人发生冲突。在这种情况下,他们什么都不做。

给定该城市,以及发生冲突的边集。求一种球迷的行动顺序,使得发生冲突的边集与输入相符。

输入格式

输入的第一行包含两个整数 N,MN,M,表示点数和边数。

接下来 MM 行,每行三个整数 Ai,Bi,CiA_i,B_i,C_i,表示有向边 AiBiA_i\rightarrow B_i,如果 Ci=1C_i=1,则这条边上发生了冲突。

输出格式

一个排列,球迷的行动顺序。

若无合法方案,输出 -1

8 9
1 4 1
1 8 1
2 3 0
5 6 0
6 5 0
7 4 1
6 4 0
7 1 1
4 5 0

8 5 6 2 3 1 7 4

提示

Special Judge 由 TOBapNw 提供,若 SPJ 有误,请联系他。

数据范围:

Subtask#0 为样例。

3N2×1043\le N\le 2\times10^4Mmin(N×(N1)2,2×105)M\le\min(\frac{N\times(N-1)}{2},2\times10^5)1Ai,BiN1\le A_i,B_i\le NCi{0,1}C_i\in\{0,1\}

样例解释:

88 号广场的球迷首先行动,占领广场 88

接下来 55 号广场的球迷行动,占领广场 4,5,64,5,6

接下来 66 号广场的球迷行动,因为广场 66 已经被占领,他们什么都不做;

接下来 22 号广场的球迷占领广场 2,32,3

33 号广场的球迷什么都不做;

接下来 11 号广场的球迷行动,占领广场 11,并在边 (1,4),(1,8)(1,4),(1,8) 上引发冲突;

77 号广场的球迷占领广场 77,并在边 (7,1),(7,4)(7,1),(7,4) 上引发冲突;

注意合法的顺序可能不止一种,样例中,(2,3,8,4,1,7,5,6)(2,3,8,4,1,7,5,6) 也是一种合法的方案。

注意 (8,5,6,3,2,1,7,4)(8,5,6,3,2,1,7,4) 不是合法的方案,因为按照这个方案,(2,3)(2,3) 上也会发生冲突,与输入不符。