CF2068A.Condorcet Elections
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
正值市政选举年。尽管该国领导人已二十年未变,但选举始终透明且公正。
共有 n 名政治候选人(编号 1 至 n)参与竞选。选举采用改进的排序投票制:每位选民需对所有 n 名候选人进行从最优到最差的排序。即每张选票是 {1,2,…,n} 的一个排列,其中排列的第一个元素代表最优先的候选人。
当且仅当候选人 a 在超过半数的选票中排在候选人 b 之前时,我们称候选人 a 击败候选人 b。
由于选举公平透明,国家电视台已提前宣布了 m 个事实——第 i 个事实为"候选人 ai 击败候选人 bi",且这些声明均发生在实际选举之前!
作为选举委员会负责人,你需要统计选票并给出符合电视台宣传结果的选票列表,或判定其不可能实现。但请注意,你最好能找到解决方案,否则可能得罪上级。
输入格式
第一行包含整数 n 和 m(2≤n≤50,1≤m≤2n(n−1))——政党数量及已知选举结果的候选人对数。
接下来 m 行中,第 i 行包含两个整数 ai 和 bi(1≤ai,bi≤n,ai=bi)——表示候选人 ai 击败候选人 bi。
每个无序对 {ai,bi} 最多出现一次。
输出格式
若存在符合电视台宣传事实的选票列表,输出 YES,否则输出 NO。
若存在有效选票列表,按以下格式输出:
首先输出投票总数 k(1≤k≤50000)。可以证明若存在有效选票列表,必存在不超过 50000 张选票的方案。
随后输出 k 行,每行包含 {1,2,…,n} 的一个排列,描述该选票的排序。排列的第一个数字代表最优先候选人。
需满足:对于所有 1≤i≤m,ai 在超过 k/2 张选票中排在 bi 之前。对于未出现在要求列表中的候选人对 {a,b},其结果可以是任意的(包括双方均未击败对方)。
输入输出样例
输入#1
2 1 1 2
输出#1
YES 1 1 2
输入#2
3 3 1 2 2 3 3 1
输出#2
YES 3 1 2 3 2 3 1 3 1 2
说明/提示
在第二个样例中,候选人 1 击败候选人 2 是因为在三张选票中有两张 1 排在 2 前(超过总票数的一半)。同理,候选人 2 击败候选人 3,候选人 3 击败候选人 1。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?