洛谷 P1692 部落衛隊

2021-07-11 22:17:34 字數 1370 閱讀 8854

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條公路的長度,公...