[蓝桥杯]算法提高 vertex cover(dfs)
問題描述
給定一個N個點M條邊的無向圖G(點的編號從1至N),問是否存在一個不超過K個點的集合S,使得G中的每條邊都至少有一個點在集合S中。
輸入格式
輸入的第一行包含一個整數(shù)T,表示數(shù)據(jù)的組數(shù)。
接下來T組數(shù)據(jù)中:每組輸入的第一行包含三個整數(shù)n, m, k,分別表示圖的點數(shù),邊數(shù),集合點數(shù)的最大值。接下來m行,每行2個正整數(shù)x,y,表示編號為 x 的節(jié)點與編號為 y 的節(jié)點間有一條邊相連。
輸出格式
對于每組測試數(shù)據(jù),若其存在解,則將解輸出出來:第一行為一個整數(shù)t,表示所選點集的大小;第二行為t個整數(shù),表示所選的點的編號。如果存在多組解,只要輸出其中一種方案即可(會有special judge程序?qū)δ愕妮敵鲞M(jìn)行檢查)。
若該組測試數(shù)據(jù)不包含解,則輸出一個數(shù)-1(一行)。
樣例輸入
2
10 8 3
6 4
7 2
7 4
7 6
9 3
9 5
10 6
10 9
10 8 2
6 4
7 2
7 4
7 6
9 3
9 5
10 6
10 9
樣例輸出
3
6 7 9
-1
數(shù)據(jù)規(guī)模和約定
對于80%的數(shù)據(jù),滿足 0<n<=20, m<=200, k<=20。
所有的數(shù)據(jù)滿足 0<n<=100, m<=5000, k<=20。
思路:這個題目沒有想到挺好的方法,就是暴力搜索。但是這個題目的數(shù)據(jù)量并沒有它所說的那么大,所以就過了。如果有好的方法,希望路過的大佬可以指正。
代碼如下:
努力加油a啊,(o)/~
總結(jié)
以上是生活随笔為你收集整理的[蓝桥杯]算法提高 vertex cover(dfs)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mavlink协议解析_jlink 串口
- 下一篇: Codeforces Round #64