#P16007. [CCO 2016 Day 1] Field Trip

[CCO 2016 Day 1] Field Trip

题目描述

作为给幼儿园小朋友的特别福利,你带他们去一个神奇的奇妙之地郊游。

你班上有 NN 名学生,为了方便起见,学生编号从 11 到 NN。学生之间有 MM 条直接的双向友谊。每个学生最多有两个朋友。

除了这 MM 条直接友谊外,学生之间还可能是“熟人”。如果两个学生 ii 和 jj 是朋友,或者存在第三个学生 kk 同时是 ii 和 jj 的熟人,那么这两个学生也是熟人。举个例子,如果 (1,2)(1, 2)、(2,3)(2, 3)、(3,4)(3, 4) 和 (4,5)(4, 5) 是直接朋友,那么学生 11 和学生 55 就是熟人。

你正准备订购校车,但遇到两个难题。首先,运输公司规定每辆校车必须恰好坐满 KK 名学生,不能少于 KK 人;其次,学生们对乘车条件很挑剔。每个学生 ii 只有满足以下两条,才愿意上车:

  1. 同车的其他学生都必须是该学生的熟人;
  2. 该学生的所有熟人都必须坐在同一辆车上。

看起来你可能没法带全班同学去郊游了。不过你会尽力让尽可能多的学生上车。为此,“尽力”可能意味着要断掉一两段友谊,牺牲小部分感情换取大局。你可以选择断开 00 条或更多的 MM 条友谊,这也会影响学生间的熟人关系。

请你计算,最多能带多少学生去郊游,且他们能被分配到恰好坐满 KK 人的校车上,同时每个学生都满意自己的座位安排。另外,既然你心地善良,还要算出为了带这么多学生,最少需要断开多少条友谊。

输入格式

第一行包含三个用空格分隔的整数 NN、MM 和 KK(1≤N≤106,0≤M≤106,1≤K≤N1 \le N \le 10^6,0 \le M \le 10^6,1 \le K \le N)。

接下来 MM 行,每行包含两个用空格分隔的整数 AiA_i 和 Bi (1≤i≤M)B_i\ (1 \le i \le M),表示学生 AiA_i 和 BiB_i 是朋友(1≤Ai,Bi≤N,Ai≠Bi1 \le A_i, B_i \le N, A_i \neq B_i)。注意没有重复的友谊对。

对于 2525 分中的 33 分,N≤1000N \le 1000。

输出格式

输出一行,包含两个用空格分隔的整数。第一个是最多能带去郊游的学生人数,第二个是为此最少需要断开的友谊数。

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

提示

样例解释

如果断开学生对 (8,2)(8,2) 和 (4,5)(4,5) 的友谊,那么可以这样安排 33 辆校车:

  • 校车 11:学生 11 和 44
  • 校车 22:学生 22 和 66
  • 校车 33:学生 33 和 55

翻译来源:GPT 4.1 mini。