P14615 [2019 KAIST RUN Fall] Capital

题目描述

给定由 $M$ 条道路连接的 $N$ 个城市。城市编号从 $1$ 到 $N$,道路编号从 $1$ 到 $M$。对于任意两个城市,都存在一系列道路连接这两个城市。道路 $i$ 的长度为 $L_i$ 公里,并双向连接城市 $A_i$ 和城市 $B_i$。每条道路的长度均为正数,即 $L_i > 0$。不幸的是,你忘记了每条道路的具体长度。 你观察到,对于每条道路 $i$,所有在该道路上的人都从 $A_i$ 单向前往 $B_i$。因此,你提出了以下假设: - 存在一个称为 $S$ 的首都城市。 - 人们从首都城市前往其他城市。 - 人们尝试沿最短路径移动。因此从 $S$ 到 $A_i$ 的最短路径长度小于等于从 $S$ 到 $B_i$ 的最短路径长度。 当你可以将每条道路的长度任意分配为正实数时,能否找到满足条件的首都城市 $S$?你可以假设至少存在一个城市满足条件。

输入格式

输入的第一行包含两个整数 $N$($2 \le N \le 500$)和 $M$($N-1 \le M \le \frac{N(N-1)}{2}$)。 接下来的 $M$ 行中,第 $i$ 行给出 $A_i$ 和 $B_i$($1 \le A_i, B_i \le N$)。 输入中不存在自环或重边。形式化地说,$A_i \ne B_i$,且 $\{A_i, B_i\} = \{A_j, B_j\} \implies i = j$。

输出格式

第一行输出可能的首都城市数量 $K$。 第二行以递增顺序输出 $K$ 个用空格分隔的整数,表示所有可能作为首都的城市。

说明/提示

翻译由 DeepSeek V3 完成