luogu#P15957. [ICPC 2018 Jakarta R] Go Make It Complete

[ICPC 2018 Jakarta R] Go Make It Complete

题目描述

安迪有一个网络 GG,包含 NN 台机器和 MM 条链路;每条链路恰好连接两台不同的机器。由于某些原因,安迪必须使他的网络“完全”,即每台机器都与其他所有机器直接相连。这意味着安迪需要在任何尚未直接相连的机器对之间添加新的链路。

为了实现这个目标,安迪将工作外包给一家名为 Go 的公司。Go 接受对网络 GG 的任意工作订单,并附带一个请求的整数 kk,即 go(G,k)go(G, k)。Go 的工作方式如下:首先,它创建一个列表 LL,其中包含 所有 尚未直接相连的机器对。然后,Go 按顺序评估列表 LL 中的每一对机器 (a,b)(a, b),如果 δa+δbk\delta_a + \delta_b \geq k,则在它们之间创建一条新链路。注意,δa\delta_a 是机器 aa 的度数,即在评估时刻 aa 已有的链路数量。δb\delta_b 同理。

Go 过程的问题在于,它按照列表 LL 中的顺序评估每一对机器。例如,设 GG 是一个包含 N=4N = 4 台机器(机器 1,2,3,41, 2, 3, 4)和 M=3M = 3 条链路的网络;链路为 {(1,2),(2,3),(3,4)}\{(1, 2), (2, 3), (3, 4)\}。在请求工作订单之前,每台机器的度数为:δ1=1\delta_1 = 1δ2=2\delta_2 = 2δ3=2\delta_3 = 2δ4=1\delta_4 = 1,即可以表示为 [1,2,2,1][1, 2, 2, 1]。假设请求了一个 k=3k = 3 的工作订单(即 go(G,3)go(G, 3))。

考虑以下两个列表:

  • L1=((1,4),(1,3),(2,4))L_1 = ((1, 4), (1, 3), (2, 4))

    • × 评估 (1,4)(1, 4),由于 δ1+δ4=1+1=2\delta_1 + \delta_4 = 1 + 1 = 2,不创建新链路。度数仍为 [1,2,2,1][1, 2, 2, 1]
    • ✓ 评估 (1,3)(1, 3),由于 δ1+δ3=1+2=3\delta_1 + \delta_3 = 1 + 2 = 3,创建新链路。度数变为 [2,2,3,1][2, 2, 3, 1]
    • ✓ 评估 (2,4)(2, 4),由于 δ2+δ4=2+1=3\delta_2 + \delta_4 = 2 + 1 = 3,创建新链路。度数变为 [2,3,3,2][2, 3, 3, 2]

    最终结果是一个包含 55 条链路的网络,由于缺少 (1,4)(1, 4) 链路而不完全。

  • L2=((2,4),(1,3),(1,4))L_2 = ((2, 4), (1, 3), (1, 4))

    • ✓ 评估 (2,4)(2, 4),由于 δ2+δ4=2+1=3\delta_2 + \delta_4 = 2 + 1 = 3,创建新链路。度数变为 [1,3,2,2][1, 3, 2, 2]
    • ✓ 评估 (1,3)(1, 3),由于 δ1+δ3=1+2=3\delta_1 + \delta_3 = 1 + 2 = 3,创建新链路。度数变为 [2,3,3,2][2, 3, 3, 2]
    • ✓ 评估 (1,4)(1, 4),由于 δ1+δ4=2+2=4\delta_1 + \delta_4 = 2 + 2 = 4,创建新链路。度数变为 [3,3,3,3][3, 3, 3, 3]

    最终结果是一个包含 66 条链路的完全网络。

由此可见,L2L_2 能产生完全网络,而 L1L_1 则不能。

向 Go 订购工作订单时,kk 越低成本越高,因此安迪希望在确保存在某个列表 LL 使得 go(G,k)go(G, k) 能产生完全网络的前提下,使 kk 尽可能大。换句话说,安迪想要最大的 kk,使得存在某个 LL 能让 go(G,k)go(G, k) 产生完全网络,而对于所有 j>kj > k,都不存在能产生完全网络的 LL 使 go(G,j)go(G, j) 成功。本题的任务就是找出这样的 kk

输入格式

输入的第一行包含两个整数:NNMM2N5002 \leq N \leq 5000M<N×(N1)20 \leq M < \frac{N \times (N-1)}{2}),分别表示机器的数量和现有链路的数量。机器编号为 11NN。接下来的 MM 行,每行包含两个整数:aia_ibib_i1ai<biN1 \leq a_i < b_i \leq N),表示一条连接机器 aia_ibib_i 的现有链路。保证每对 (ai,bi)(a_i, b_i) 在输入中最多出现一次。

输出格式

输出一行一个整数 kk,即为所求。

4 3
1 2
2 3
3 4
3
5 0
0
5 2
1 2
3 4
2

提示

样例输入 #2 的解释

安迪的网络初始没有任何链路。为了使网络完全,安迪必须订购 go(G,0)go(G, 0)

翻译由 DeepSeek V3.2 完成