P8066 [BalkanOI 2012] Fan Groups

题目背景

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

题目描述

有 $n$ 个城市广场(标记为 $1$ 到 $n$)和其中一些之间的 $m$ 条单向街道,每个广场上初始有一群球迷(每个广场上的球迷支持不同球队)。 这 $n$ 群球迷按照某个特定的顺序进行以下操作: - 占领他们所在的广场(如在 $1$ 广场的人会先占领 $1$ 广场)。 - 从他们占领的某个广场 $u$ 出发,走到与其相邻的每个广场 $v$。如果广场 $v$ 已经被人占领,他们会在边 $(u,v)$ 上发生冲突,并不再在这个方向上前进;否则,他们会占领广场 $v$,并重复这一步,直到没有能到达的广场为止。 - 如果他们所在的广场在此前被别的人群占领,他们不会与那群人发生冲突。在这种情况下,他们什么都不做。 给定该城市,以及发生冲突的边集。求一种球迷的行动顺序,使得发生冲突的边集与输入相符。

输入格式

输入的第一行包含两个整数 $N,M$,表示点数和边数。 接下来 $M$ 行,每行三个整数 $A_i,B_i,C_i$,表示有向边 $A_i\rightarrow B_i$,如果 $C_i=1$,则这条边上发生了冲突。

输出格式

一个排列,球迷的行动顺序。 若无合法方案,输出 `-1`。

说明/提示

Special Judge 由 [TOBapNw](https://www.luogu.com.cn/user/185864) 提供,若 SPJ 有误,请联系他。 #### 数据范围: Subtask#0 为样例。 $3\le N\le 2\times10^4$,$M\le\min(\frac{N\times(N-1)}{2},2\times10^5)$,$1\le A_i,B_i\le N$,$C_i\in\{0,1\}$。 #### 样例解释: $8$ 号广场的球迷首先行动,占领广场 $8$; 接下来 $5$ 号广场的球迷行动,占领广场 $4,5,6$; 接下来 $6$ 号广场的球迷行动,因为广场 $6$ 已经被占领,他们什么都不做; 接下来 $2$ 号广场的球迷占领广场 $2,3$; $3$ 号广场的球迷什么都不做; 接下来 $1$ 号广场的球迷行动,占领广场 $1$,并在边 $(1,4),(1,8)$ 上引发冲突; $7$ 号广场的球迷占领广场 $7$,并在边 $(7,1),(7,4)$ 上引发冲突; 注意合法的顺序可能不止一种,样例中,$(2,3,8,4,1,7,5,6)$ 也是一种合法的方案。 注意 $(8,5,6,3,2,1,7,4)$ 不是合法的方案,因为按照这个方案,$(2,3)$ 上也会发生冲突,与输入不符。