AT_nikkei2019_qual_d Restore the Tree

题目描述

有一棵包含 $N$ 个顶点的有根树(请参见注释)。这些顶点编号为 $1$ 到 $N$。除根以外的每个顶点,都有一条从其父节点指向它的有向边。注意,根节点不一定是顶点 $1$。 高桥君在这张图上又添加了 $M$ 条新的有向边。每条新添加的边 $u \rightarrow v$,都是从某个顶点 $u$ 指向其后代顶点 $v$。 现在给出高桥君添加边之后的 $N$ 个顶点、$N-1+M$ 条边组成的有向图。更具体地,给出 $N-1+M$ 对整数 $(A_1, B_1),\ldots,(A_{N-1+M}, B_{N-1+M})$,表示第 $i$ 条边是从顶点 $A_i$ 指向顶点 $B_i$。 请你还原出原来的有根树。

输入格式

输入通过标准输入给出,格式如下: > $N$ $M$ $A_1$ $B_1$ $\ldots$ $A_{N-1+M}$ $B_{N-1+M}$

输出格式

请输出 $N$ 行。第 $i$ 行输出一个整数:如果顶点 $i$ 是原树的根,则输出 `0`,否则输出顶点 $i$ 在原树中的父节点编号。 可以证明,原树是唯一确定的。

说明/提示

### 注释 关于“树”及相关图论术语,请参考 [Wikipedia 文章](https://ja.wikipedia.org/wiki/%E6%9C%A8_(%E6%95%B0%E5%AD%A6))。 ### 约束条件 - $3 \leq N$ - $1 \leq M$ - $N + M \leq 10^5$ - $1 \leq A_i, B_i \leq N$ - $A_i \neq B_i$ - 如果 $i \neq j$,则 $(A_i, B_i) \neq (A_j, B_j)$ - 输入的图是通过在 $N$ 个顶点的有根树上,按照题目条件添加 $M$ 条边得到的。 ### 样例解释 1 输入的图如下所示。 ![](https://img.atcoder.jp/nikkei2019-qual/ee05880ceecf703f656dd50bf22c573f.png) 可以认为这是在 $1 \rightarrow 2 \rightarrow 3$ 这棵有根树上添加了一条 $1 \rightarrow 3$ 的边。 由 ChatGPT 4.1 翻译