試題 演算法提高 vertex cover dfs

2021-10-24 14:21:48 字數 1317 閱讀 3304

問題描述

給定乙個n個點m條邊的無向圖g(點的編號從1至n),問是否存在乙個不超過k個點的集合s,使得g中的每條邊都至少有乙個點在集合s中。

輸入格式   輸入的第一行包含乙個整數t,表示資料的組數。   接下來t組資料中:每組輸入的第一行包含三個整數n, m,

k,分別表示圖的點數,邊數,集合點數的最大值。接下來m行,每行2個正整數x,y,表示編號為 x 的節點與編號為 y 的節點間有一條邊相連。

輸出格式

對於每組測試資料,若其存在解,則將解輸出出來:第一行為乙個整數t,表示所選點集的大小;第二行為t個整數,表示所選的點的編號。如果存在多組解,只要輸出其中一種方案即可(會有special

judge程式對你的輸出進行檢查)。   若該組測試資料不包含解,則輸出乙個數-1(一行)。

樣例輸入

2108

3647

2747

6939

510610

91082

6472

7476

9395

106109

樣例輸出

367

9-1

資料規模和約定   對於80%的資料,滿足 0根據邊來遞迴,然後討論兩個點是否要選。

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n=

105;

const

int inf=

0x3f3f3f3f

;int vis[n]

,n,m,k;

struct nodes[

5005];

intdfs

(int pos,

int num)

elseif(

dfs(pos+

1,num)

)return0;

}int

main()

if(dfs(0,

0))printf

("%d\n"

,ans)

;for

(i=1

;i<=n;i++)}

else

puts

("-1");

printf

("\n");

}return0;

}

試題 演算法提高 斷案

問題描述 公安人員審問甲 乙 丙 丁四個嫌疑犯,已確知,這四個人當中僅有一人是偷竊者,還知道這四個人的答話,要麼完全誠實,要麼完全說謊。在回答公安人員的問話中 甲說 乙沒有偷,是丁偷的。乙說 我沒有偷,是丙偷的。丙說 甲沒有偷,是乙偷的。丁說 我沒有偷,我用的那東西是我家裡的。請根據上述四人答話,判...

試題 演算法提高 成績排序

藍橋杯習題答案彙總 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給出n個學生的成績,將這些學生按成績排序,排序規則,優先考慮數學成績,高的在前 數學相同,英語高的在前 數學英語都相同,語文高的在前 三門都相同,學號小的在前 輸入格式 第一行乙個正整數n,表示學生人數 接下來n...

試題 演算法提高 拿糖果

問題描述 媽媽給小b買了n塊糖!但是她不允許小b直接吃掉。假設當前有m塊糖,小b每次可以拿p塊糖,其中p是m的乙個不大於根號下m的質因數。這時,媽媽就會在小b拿了p塊糖以後再從糖堆裡拿走p塊糖。然後小b就可以接著拿糖。現在小b希望知道最多可以拿多少糖。輸入格式 乙個整數n 輸出格式 最多可以拿多少糖...