部落衛隊time limit:10000ms memory limit:65536k
total submit:244 accepted:166
case time limit:1000ms
description
原始部落byteland 中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2個人都不是仇敵。
.程式設計任務:
給定byteland 部落中居民間的仇敵關係,程式設計計算組成部落衛隊的最佳方案。
input
第1行有2個正整數n(n<=100)和m,表示byteland部落中有n位居民,居民間有m個仇敵關係。居民編號為1,2,…,n。接下來的m行中,每行有2個正整數u和v,表示居民u與居民v是仇敵。
output
第1行是部落衛隊的頂人數;
第2行是衛隊組成xi ,1 ≤ i ≤ n ,xi=0 表示居民i不在衛隊中,xi =1表示居民i在衛隊中。
sample input
7 10 3
1 2 1 0 1 0 0 0 1
1 4
2 4
2 3
2 5
2 6
3 5
3 6
4 5
5 6
sample output
31 0 1 0 0 0 1
source
type arr=set of 0..100;var a,f:array[1..100]of boolean;
s:array[1..100]of arr;
w:arr;
n,m,x,y,i,tot,max:longint;
procedure try(k:longint;w:arr;tot:longint);
var i:longint;
begin
if (tot>max)then
begin max:=tot; a:=f;end;
for i:=k+1 to n do
if not(i in w) then
begin
f[i]:=true;
try(i,w+s[i],tot+1);
f[i]:=false;
end;
end;
begin
readln(n,m);
w:=;
fillchar(f,sizeof(f),#0);
max:=-maxlongint;
for i:=1 to m do
begin
readln(x,y);
s[x]:=s[x]+[y];
end;
try(0,w,0);
writeln(max);
for i:=1 to n do
if a[i] then write('1 ')
else write('0 ');
writeln;
end.
C 部落衛隊
問題描述 原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2 個人都不是仇敵。給定byteland部落中居民間的仇敵關係,程式設計計算組成部落衛隊的最佳方案。輸入 ...
部落衛隊pascal解題程式
type jh set of 0.100 集合 varn,m,i,u,v,tj longint w jh a,f array 0.100 of boolean s array 1.100 of jh procedure search dep longint w jh t longint dep是第幾...
部落衛隊問題 分支限界法
問題描述 原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵,部落首長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2個人都不是仇敵。演算法設計 給定byteland部落中居民間的仇敵關係,計算組成部落衛隊的最佳方案。資料...