logo AlgoBeat OnlineJudge
登录 注册

#214855. [COCI 2025/2026 #3] 宴会 / Domjenak

内存限制:512 MiB 时间限制:2000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

本题满分


Malnar 先生正在为他的 位同事举办宴会,同事编号为 。同事们是两两成对来到宴会的。Malnar 先生观察到这群人传播信息时遵循一些奇怪规则:

第一,当且仅当两人是朋友,A 才愿意把信息告诉 B。保证一起到宴会的那一对同事互为朋友。

第二,每个人最多只愿意向一个人分享信息,并且对方必须尚未知道该信息。

第三,每个人尝试分享信息时,优先级最高的是与自己同来宴会的搭档。

换句话说:若 A 与 B 同来宴会,并且 A 知道而 B 不知道某信息,则 A 一定会把信息告诉 B。由于规则 2,A 不会再把该信息告诉其他人;而 B 之后会尝试把信息告诉另一位朋友,如此继续。

第四,这群人可以被划分为两个子集,使得任意一对朋友都不在同一子集。

Malnar 先生打算把故事讲给其中一位同事,并关心最多能有多少位同事听到故事。若最大人数为 ,他还希望你给出一个长度为 的序列 ,使得如果他把故事讲给 ,那么对所有 ,同事 都能把故事讲给 (符合上述传播规则)。

在整理规则时,Malnar 先生记录下了所有“朋友关系”,但忘记了当初哪些同事是成对来到宴会的。幸运的是,这些信息可以被唯一恢复:也就是说,存在且仅存在一种把 位同事划分为 对的方式,使得同一对里的两人是朋友。

请你帮助 Malnar 先生回答上述问题。

输入格式

第一行包含两个整数 ),分别表示参加宴会的同事“对数”与朋友关系条数。

接下来 行,每行包含两个整数 ),表示 是朋友。

输出格式

第一行包含一个整数 ,表示最多能听到故事的人数。

第二行包含 个整数,给出满足条件的序列。若有多种可能的答案,输出任意一种即可。

样例

样例输入 1

2 3
1 2
1 4
3 4

样例输出 1

4
2 1 4 3

样例输入 2

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

样例输出 2

4
6 1 2 3

样例输入 3

4 8
1 2
2 3
3 4
4 1
2 5
3 6
4 7
7 8

样例输出 3

6
6 3 4 1 2 5

数据范围与提示

【样例解释】

样例 #1 解释:参加宴会的同事配对为:

样例 #2 解释:参加宴会的同事配对为:。可以证明不存在更长的可行序列。

例如序列 ,虽然相邻两人都是朋友,但 听到故事后无法把故事告诉 ,因为 的宴会搭档 仍不知道故事(规则 3 的优先级阻止了该传播)。

【子任务】

子任务 分值 限制
每位同事最多与 位同事是朋友
无额外限制

保证 ,都有