【2018百度之星程序设计大赛初赛】degree

Problem Description

度度熊最近似乎在研究图论。给定一个有 N 个点 (vertex) 以及 M 条边 (edge) 的无向简单图 (undirected simple graph),此图中保证没有任何圈 (cycle) 存在。

现在你可以对此图依序进行以下的操作:

移除至多 K 条边。
在保持此图是没有圈的无向简单图的条件下,自由的添加边至此图中。
请问最后此图中度数 (degree) 最大的点的度数可以多大呢?

Input

输入的第一行有一个正整数 T,代表接下来有几笔测试资料。

对于每笔测试资料: 第一行有三个整数 N, M, K。 接下来的 M 行每行有两个整数 a 及 b,代表点 a 及 b 之间有一条边。 点的编号由 0 开始至 N-1。
0KM2×105 0 ≤ K ≤ M ≤ 2 × 10 5 ​​
1N2×105 1 ≤ N ≤ 2 × 10 5 ​​
0a,b<N 0 ≤ a , b < N
给定的图保证是没有圈的简单图 1T23 1 ≤ T ≤ 23
至多 2 笔测试资料中的 N>1000 N > 1000

Output

对于每一笔测试资料,请依序各自在一行内输出一个整数,代表按照规定操作后可能出现的最大度数。

Sample Input

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

Sample Output

2
4

Solution

其实题目大意就是给你一个森林,可以从中删去至多k条边,然后添加任意条边,但保证还是一个森林或一颗树,使得一个点的度数最大,让你求这个最大的度数。
先考虑不删边的情况,我们可以发现如果不删边,那么它的答案就是这n个点中度数最大的点的度数加上森林的个数再减一,减一是减去当前的这颗树。就相当于从每颗树都向这个最大度数的点所在的树连了一条边。之后我们考虑删边的情况,如果要删边,那么也就是相当于将除了这个最大度数的点向其他点连的边,其他边都要尽量删去,然后再尽可能多的向这个最大度数的点连一条边,这样就能保证在不损失最大度数的情况下再让答案更优。综上,答案就是度数最大的点的度数+森林的个数-1+min(m-度数最大的点的度数,k)。


作者:zsjzliziyang
QQ:1634151125
转载及修改请注明
本文地址:https://blog.csdn.net/zsjzliziyang/article/details/81607176

你可能感兴趣的:(题目)