原始部落byteland中的居民們為了爭搶有限的資源,經常發生衝突。幾乎每個居民都有它的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何兩個人都不是仇敵。
第一行兩個正整數n和m,表示byteland部落中有n個居民,居民間有m個仇敵關係, 0輸出部落衛隊最佳組建方案中包含的居民人數。之後逐個輸出衛隊組成xi, 1<=i<=n, xi=0表示居民i不在衛隊中,xi=1表示居民i在衛隊中。
7 101 21 4
2 42 3
2 52 6
3 53 6
4 55 6
31 0 1 0 0 0 1
#include usingnamespace
std;
int n; //
有 n 個居民
int m; //
有 m 個仇敵關係
bool hate[300][300]=; //
a[i][j] 表示 居民 i 對 居民 j 是否 仇恨 , 1表示有
bool inteam[300]=; //
居民i是否在衛隊中 inteam[i]=1 表示在衛隊中,初始化為0
bool bestrecord[300]=;
int bestcount = 0
; int getcount( bool inteam ) //
遍歷 inteam 陣列 ,計算該方案下 衛隊的人數
return
count;
}void record() //
把 最好的方案記錄下來
bool canin(int dep) //
第 dep 個村民能否進入衛隊 (和已經進入衛隊的人有沒有衝突)
void search(int dep) //
確定 第 dep 個村民要不要進入衛隊
return
; }
//第 i 個村民進入衛隊
if(canin(dep))
//第i個村民不進入衛隊
search(dep+1
);
return
; }
intmain()
search(
1); //
從居民1開始
cout
for(int i=1;i<=n;i++)
return0;
}
luogu1692 部落衛隊
時空限制 1000ms 128mb 原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2 個人都不是仇敵。給定byteland部落中居民間的仇敵關係,程式設計計算組成...
7 5 部落 20分 (沒用set)
在乙個社群裡,每個人都有自己的小圈子,還可能同時屬於很多不同的朋友圈。我們認為朋友的朋友都算在乙個部落裡,於是要請你統計一下,在乙個給定社群中,到底有多少個互不相交的部落?並且檢查任意兩個人是否屬於同乙個部落。輸入在第一行給出乙個正整數n 104 是已知小圈子的個數。隨後n行,每行按下列格式給出乙個...
洛谷 P1692 部落衛隊
p1692 部落衛隊 洛谷 題目描述 原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2 個人都不是仇敵。給定byteland部落中居民間的仇敵關係,程式設計計算組...