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