codeforces#P2068A. Condorcet Elections

    ID: 36062 远端评测题 2000ms 1024MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>constructive algorithmsgraphsgreedyprobabilities

Condorcet Elections

以下题面由 AI 翻译。

问题描述

在一个国家,每隔一段时间就会举行一次选举。尽管这个国家的领导人已经连续二十年没有改变,但每次选举都是公开透明、公正的。

有$n$个政治候选人,编号从$1$到$n$,在竞选中争夺治理权。投票采用了一种变种的排序投票制。每个选民会在他们的选票上对所有$n$个候选人进行排名,从最偏好的候选人到最不偏好的候选人。也就是说,每张选票都是集合$\{1, 2, \ldots, n\}$的一个排列,其中排列的第一个元素对应最偏好的候选人。

我们说候选$a$击败了候选$b$,如果在超过半数的选票中,候选$a$比候选$b$更受选民欢迎。

由于选举是公开透明的,电视 stations已经宣布了一个包含$m$条事实的列表——第$i$条事实是“候选人$a_i$打败了候选人$b_i$”——所有这些事实都在选举之前。

作为选举委员会负责人,你负责汇总选票。你需要提供一个符合电视上广告所描述结果的选票列表,或者判断这是不可能的。不过,你强烈鼓励找到一个解决方案,否则可能会引起高层的不满。

第一行包含整数$n$和$m$($2 \le n \le 50$,$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_i, b_i\}$最多出现一次。

如果存在符合电视上广告所描述结果的选票列表,输出“YES”;否则输出“NO”。

如果有符合条件的选票列表,输出其中一条这样的选票列表。

输出$k$个选票的数量($1 \le k \le 50\,000$)。可以证明,如果存在符合要求的选票列表,那么一定存在一个不超过$50\,000$张的选票列表。

然后输出$k$行。第$i$行由$\{1, 2, \ldots, n\}$的一个排列描述,表示第$i$张选票。排列的第一个元素是最受欢迎的候选人,最后一个元素是最不受欢迎的候选人。

对于$1\le i\le m$,$a_i$在超过$k/2$张选票中比$b_i$更早出现。对于不在选举要求列表中的候选对$\{a, b\}$,结果可以是任意的,包括$a$和$b$都不打败对方。