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是第幾個人,w是總人數
vari:longint;
begin
if t>tj then
begin
tj:=t;
a:=f;
end;//a陣列記錄人數最多時的每個人的存在情況
for i:=dep+1 to n do
begin
if not(i in w) then//w存放被選人的仇敵,第i人不是仇敵才行
begin
f[i]:=true;//將i選進去
search(i,w+s[i],t+1);//搜尋
f[i]:=false;//回溯
end;
end;
end;
begin
readln(n,m);//輸入
w:=;//賦值
fillchar(f,sizeof(f),false);//賦值
for i:=1 to m do
begin
readln(u,v);
s[u]:=s[u]+[v];
end;
tj:=0;//最多人數
search(0,w,0);//搜尋
writeln(tj);
for i:=1 to n do//輸出
if a[i]=true then write('1 ') else write('0 ');
end.
部落衛隊 2281
部落衛隊 time limit 10000ms memory limit 65536k total submit 244 accepted 166 case time limit 1000ms description 原始部落byteland 中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民...
C 部落衛隊
問題描述 原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵。部落酋長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2 個人都不是仇敵。給定byteland部落中居民間的仇敵關係,程式設計計算組成部落衛隊的最佳方案。輸入 ...
騎士旅行pascal解題程式
這題我是用廣度優先搜尋的方法來做的 我先找出下乙個能走的點,再把它放進佇列裡,如果到了目標點,就把tail放進best,tail等於0,最後輸出。做這題的時候,用最大資料時,一直棧溢位,原來是陣列不夠大,把50 50算成250了,搞得我除錯了超久。const dx array 1.8 of inte...