p1692 部落衛隊
洛谷
題目描述
原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2 個人都不是仇敵。
給定byteland部落中居民間的仇敵關係,程式設計計算組成部落衛隊的最佳方案。
輸入輸出格式
輸入格式:
第1行有2個正整數n和m,表示byteland部落中有n個居民,居民間有m個仇敵關係。居民編號為1,2,…,n。接下來的m行中,每行有2個正整數u和v,表示居民u與居民v是仇敵。
輸出格式:
第1行是部落衛隊的頂人數;檔案的第2行是衛隊組成x i,1≤i≤n,xi =0 表示居民i不在衛隊中,xi=1表示居民i在衛隊中。
輸入輸出樣例
輸入樣例#1:
7 10
1 2
1 4
2 4
2 3
2 5
2 6
3 5
3 6
4 5
5 6
輸出樣例#1:
3 1 0 1 0 0 0 1
說明60%資料:n<=20,m<=100
所有資料:n<=100,m<=3000
暴搜+剪枝
#include
#include
#include
using
namespace
std;
int a[1001][1001],b[1000]=,c[1000];
int max1=0,s,m;
void shuchu();
int n;
int dfs(int);
int main()
dfs(1);
cout
cout
<" ";
fclose(stdin);fclose(stdout);
return0;}
int dfs(int k)
//判斷能否進隊,與之前已經進隊的元素是否有衝突
if (c==0)
} if (k1); //如果沒到邊界,遞迴深搜,進行下乙個元素
else
if (s>max1&&k==n) //否則則所有元素已經判斷進隊完畢,則判斷此次計數是否最大值,並交換,覆蓋最優解
if (z==1) s--; //回溯
b[k]=0; //回溯
}}void shuchu()
洛谷 P1692 部落衛隊(dfs) 題解
原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2 個人都不是仇敵。給定byteland部落中居民間的仇敵關係,程式設計計算組成部落衛隊的最佳方案。輸入格式 第1行...
luogu1692 部落衛隊
時空限制 1000ms 128mb 原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2 個人都不是仇敵。給定byteland部落中居民間的仇敵關係,程式設計計算組成...
洛谷 4047 部落劃分
bb地區在 過後,所有村莊都造成了一定的損毀,而這場 卻沒對公路造成什麼影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連線著兩個重建完成的村莊的公路才能通車,只能到達重建完成的村莊。給出bb地區的村莊數nn,村莊編號從00到n 1n 1,和所有mm條公路的長度,公...