jzoj5806】的更多相关文章

[Solution] JZOJ-5806 简单的操作 题面 Description 从前有个包含n个点,m条边,无自环和重边的无向图. 对于两个没有直接连边的点u;v,你可以将它们合并.具体来说,你可以删除u;v及所有以它们作为端点的边,然后加入一个新点x,将它与所有在原图中与u或v有直接连边的点连边. 你需要判断是否能通过若干次合并操作使得原图成为一条链,如果能,你还需要求出这条链的最大长度 Input 从文件merge.in中读入数据. 第一行两个正整数n;m,表示图的点数和边数. 接下来m…
我們發現,如果有奇環顯然無解,因為我們每一次合併一個奇環,一定會產生一個偶環和一個更小的奇環,最終會形成一個三元環而無法合併 所以,這個圖需要是一個二分圖,需要進行二染色 然後把這個圖所有的偶環找出來,答案就是這些偶環的長度除以2,這樣子很難 然而我們發現,偶環上的任意兩個點的最大距離的最短值一定等於偶環長度除以2,所以找出上一問等價于找出最短路的最大值,進行bfs即可 但是有可能有多個聯通塊,所以我們可以尋找所有聯通塊中的最短路徑的最大值即可 代碼: #include<bits/stdc++.…