給一棵n個節點的樹,在點上放置士兵,每個士兵能監視周圍的所有邊,詢問最少放置的士兵數dp
[i,0
]表示在
i點不放
士兵合法
的最小放
置數dp
[i,1
]表示在
i點放士
兵合法的
最小放置
數 dp
[i,0
]=∑d
p[so
n[i]
,1]
dp[i
,1]=
∑(dp
[son
[i],
1],d
p[so
n[i]
,0])
min
var
w:array[0..7500,1..2]of longint;
dp:array[0..1505,0..1]of longint;
y:array[0..1505]of longint;
i,j,k:longint;
n,a,b,c,len:longint;
procedure
init
(a,b:longint);
begin
w[len,1]:=b;
if w[a,2]=0
then w[a,2]:=len else w[w[a,1],2]:=len;
w[a,1]:=len; inc(len);
end;
function
min(a,b:longint):longint;
begin
if a>b then
exit(b) else
exit(a);
end;
procedure
dfs(a:longint);
var tt:longint;
begin
y[a]:=1; dp[a,0]:=0; dp[a,1]:=1;
if (w[a,1]=w[a,2])and(y[w[w[a,1],1]]=1)
then
exit;
tt:=w[a,2];
while tt<>0
dobegin
if y[w[tt,1]]=0
then
begin
dfs(w[tt,1]);
inc(dp[a,1],min(dp[w[tt,1],1],dp[w[tt,1],0]));
inc(dp[a,0],dp[w[tt,1],1]);
end;
tt:=w[tt,2];
end;
end;
begin
readln(n); len:=n+1;
for i:=1
to n do
begin
read(a,b);
for j:=1
to b do
begin
read(c); init(a,c); init(c,a); end;
end;
dfs(0);
writeln(min(dp[0,0],dp[0,1]));
end.
tyvj 叢林探險
東非大裂谷中有一片神秘的叢林,是全世界探險家的樂園,著名黃 探險家bb一直想去試試。正好我國科學家2005年4月將首次對東非大裂谷進行科考,bb決定隨科考隊去神秘叢林探險。在出發之前,他蒐集了國內外有關神秘叢林探險的資料,並繪製成一張地圖 該地圖上有若干安全點 包括入口點和出口點 並將這些安全點編號...
Tyvj 模擬賽 運
zhx和妹子們玩數數遊戲。僅包含4或7的數被稱為幸運數。乙個序列的子串行被定義為從序列中刪去若干個數,剩下的數組成的新序列。兩個子串行被定義為不同的當且僅當其中的元素在原始序列中的下標的集合不相等。對於乙個長度為n的序列,共有2n個不同的子串行。包含乙個空序列 乙個子串行被稱為不幸運的,當且僅當其中...
TYVJ1133(銀行取款)
演算法 佇列 很簡單的乙個佇列操作。i命令是向隊尾追加乙個元素,o命令是輸出隊頭元素並且隊頭出隊。program p1133 var x,tail,head longint que array 1.100 of longint ch char begin assign input,p1133.in ...