测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A70724. 比赛组队

编程题 提高

题目描述

有一场数学团体赛,学校要从 n 个人中选出 m个人组队参赛,这 m 个人中有 k 对人本身在校内就是一个团队的,因此在一个团队的同学要么都选,要么都不选。

请你编程选出尽可能和 m 接近的人数。

输入格式

第一行,三个正整数 n,m,k

2 至第 k 行,每行 2个数,表示在校内就在一个团队的 2 个人的编号(编号为 1,2, \dots ,n)。

数据范围:

1≤n,m≤2 \times 10^4

输出格式

一行,与原来的 m 尽可能接近的选出的人数。

如果有两种方案与 m 的差的绝对值相等,选较小的一种。

输入输出样例

输入 #1
4 3 2
1 2
3 4
输出 #1
2
输入 #2
6 4 4
2 3
3 4
4 5
5 6
输出 #2
5

说明/提示

## 思路

用并查集维护连通:find 找根,unite 合并集合。

## 步骤

1. 初始化每个元素的父节点为自己。
2. 按操作合并或查询是否同根。
3. 输出题面要求的连通信息。