#6479. B:保持冷静,保持社交距离 (Keep Calm and Social Distancing)
B:保持冷静,保持社交距离 (Keep Calm and Social Distancing)
题目 B:保持冷静,保持社交距离 (Keep Calm and Social Distancing)
| 属性 | 规格 |
|---|---|
| 输入文件 | 标准输入 (Standard Input) |
| 输出文件 | 标准输出 (Standard Output) |
| 时间限制 | C++: 2s / Java: 4s / Python: 20s |
| 内存限制 | 1024 MB |
题目描述
一场盛大的技术会议即将在下周举行。你刚收到邀请,准备去和软件开发大咖们交流。你开发了一款新应用,想尽可能多地向参会者推广,但你发现时间只够见 个人。
由于 2020 年的特殊情况,所有人必须保持社交距离。为了让你的应用推广最有效,你决定挑选 个彼此之间距离最远的参与者。
社交距离的定义:
- 共有 名参与者(编号 到 )。
- 每个参与者最多只有两个朋友。
- 友谊是双向的(A 是 B 的朋友,则 B 也是 A 的朋友)。
- 两人之间的社交距离 是连接 A 和 B 的最短社交关系链的长度。
- 如果 A 和 B 是朋友,。
- 如果 A 和 B 不是朋友但有共同好友,。
- 如果 A 和 B 之间不存在任何连接路径,(无穷大)。
- 一个集合 的社交距离 定义为集合中任意两个不同成员之间 的最小值。
任务: 找到一个包含 个人的集合 ,使得 最大化。即:让这 个人中距离最近的那一对人的距离尽可能大。
输入格式
- 第一行包含三个空格分隔的整数:(参与者人数,)、(好友关系对数,)和 (你要见的人数,)。
- 接下来的 行,每行包含两个整数 ,表示 和 是朋友。保证没有重复的友谊,且不会有人和自己是朋友。
输出格式
输出两行:
- 第一行:挑选出的 个人之间的最小距离的最大值。如果这 个人可以完全互不相通,则输出单词
infinity。 - 第二行:这 个人的编号(顺序不限)。