atcoder#NIKKEI2019QUALD. Restore the Tree

Restore the Tree

题目描述

N N 頂点の根付き木 (注記を参照) があり、その頂点には 1 1 から N N までの番号が振られています。 根以外の各頂点には、その親から一本の有向辺が伸びています。 なお、根は頂点 1 1 とは限りません。

高橋くんは、このグラフに M M 本の新たな有向辺を書き加えました。 書き足された各辺 u  v u\ \rightarrow\ v は、ある頂点 u u からその子孫であるような頂点 v v に向かって伸びています。

高橋くんが辺を書き加えたあとの N N 頂点 N1+M N-1+M 辺の有向グラフが与えられます。 より具体的には、N1+M N-1+M 組の整数のペア (A1, B1), ..., (AN1+M, BN1+M) (A_1,\ B_1),\ ...,\ (A_{N-1+M},\ B_{N-1+M}) が与えられ、これらは i i 番目の辺が頂点 Ai A_i から頂点 Bi B_i に向かって伸びていることを表します。

元の根付き木を復元してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M A1 A_1 B1 B_1 : : AN1+M A_{N-1+M} BN1+M B_{N-1+M}

输出格式

N N 行出力せよ。 i i 行目には、頂点 i i が元の木の根であれば 0 を出力し、そうでなければ元の木で頂点 i i の親を表す整数を出力すること。

なお、元の木は一意に定まることが示せる。

题目大意

nn 个节点组成了一棵有根树,后面又增加了 mm 条有向边。

于是就成了 n+m1n+m-1 条边的有向图,输入给定这个图。

mm 条边都是从原树的一个节点连上了自己的后代。

请求出原树的结构(对于节点 1n1 \sim n 输出每个节点的父亲,如果是根节点则输出 00)。

Translated by WSXZCLXS

3 1
1 2
1 3
2 3
0
1
2
6 3
2 1
2 3
4 1
4 2
6 1
2 6
4 6
6 5
6
4
2
0
6
2

提示

注記

「木」や関連するグラフ理論の用語に関しては、Wikipediaの記事などをご覧ください。

制約

  • 3  N 3\ \leq\ N
  • 1  M 1\ \leq\ M
  • N + M  105 N\ +\ M\ \leq\ 10^5
  • 1  Ai, Bi  N 1\ \leq\ A_i,\ B_i\ \leq\ N
  • Ai  Bi A_i\ \neq\ B_i
  • i  j i\ \neq\ j ならば (Ai, Bi)  (Aj, Bj) (A_i,\ B_i)\ \neq\ (A_j,\ B_j)
  • 入力されるグラフは、N N 頂点の根付き木に問題文中の条件を満たす M M 本の辺を書き足すことで得られる。

Sample Explanation 1

入力されたグラフは次のようなものです。 ![](https://img.atcoder.jp/nikkei2019-qual/ee05880ceecf703f656dd50bf22c573f.png) これは、1  2  3 1\ \rightarrow\ 2\ \rightarrow\ 3 という根付き木に辺 1  3 1\ \rightarrow\ 3 を書き足したものであると考えられます。