洛谷 P1692 部落衛隊(dfs) 題解

2021-08-27 00:12:55 字數 1377 閱讀 1351

原始部落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

一開始是想是不是圖論的知識,後來看了,資料好小,就直接暴搜臉,結果就過了,只要判斷當前選的人加上後面所有的人如果都已經小於現有的ans,那麼就可以return了,可以過。

#include #include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f

#define ll long long

using namespace std;

const int maxn=1e5+10;

int tu[105][105];

int n,m,ans=0;

bool vis[110],rec[110];

void dfs(int x,int sum)

return;

} if(sum+n-x+1int flag=0;

for(int i=1;iif(!flag)

dfs(x+1,sum);

}int main()

dfs(1,0);

printf("%d\n",ans);

for(int i=1;i<=n;i++)

printf("%d%c",rec[i],i==n?'\n':' ');

return 0;

}

洛谷 P1692 部落衛隊

p1692 部落衛隊 洛谷 題目描述 原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2 個人都不是仇敵。給定byteland部落中居民間的仇敵關係,程式設計計算組...

luogu1692 部落衛隊

時空限制 1000ms 128mb 原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2 個人都不是仇敵。給定byteland部落中居民間的仇敵關係,程式設計計算組成...

洛谷 4047 部落劃分

bb地區在 過後,所有村莊都造成了一定的損毀,而這場 卻沒對公路造成什麼影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連線著兩個重建完成的村莊的公路才能通車,只能到達重建完成的村莊。給出bb地區的村莊數nn,村莊編號從00到n 1n 1,和所有mm條公路的長度,公...