破壞石油運輸系統問題
網路流題,關鍵在於,此題求的不是飽和弧,可能存在的情況是:存在兩條流量相同的並行路徑,正確的做法是:把非飽和弧連上,建乙個圖,則一條滿足條件的路徑應該是兩端點不連通(顯然是floyed)。
**如下:
var
a,b,c,d:array[1..10000] of longint;
map:array[1..200,1..200] of longint;
n,m,s,t,ans:longint;
g:array[1..200,1..200] of boolean;
vh,di,dis,pre,his:array[0..200] of longint;
function sap:longint;
var i,j,j1,aug,min,flow,tmp:longint;
flag:boolean;
begin
fillchar(vh,sizeof(vh),0); vh[0]:=n;
for i:=1 to n do begin di[i]:=1; dis[i]:=0; end;
i:=s; aug:=maxlongint; flow:=0;
while dis[s]0)and(dis[j]+1=dis[i]) then begin
flag:=true; if map[i,j]s do begin
tmp:=i; i:=pre[i];
dec(map[i,tmp],aug); inc(map[tmp,i],aug);
end;
aug:=maxlongint;
end;
break;
end;
if flag then continue;
min:=n-1;
for j:=1 to n do
if (map[i,j]>0)and(dis[j]s then begin
i:=pre[i]; aug:=his[i];
end;
end;
sap:=flow;
end;
procedure main;
var i,j,k:longint;
begin
fillchar(map,sizeof(map),0);
readln(n,m,s,t);
for i:=1 to m do begin
readln(a[i],b[i],c[i]);
map[a[i],b[i]]:=c[i];
map[b[i],a[i]]:=c[i];
end;
sap;
fillchar(g,sizeof(g),false);
for i:=1 to n do
for j:=1 to n do
if (map[i,j]<>0)and(map[j,i]<>0) then g[i,j]:=true;
for k:=1 to n do
for i:=1 to n do
if i<>k then
for j:=1 to n do
if (j<>i)and(j<>k) then
g[i,j]:=g[i,j] or (g[i,k] and g[k,j]);
ans:=0;
for i:=1 to m do
if (not g[a[i],b[i]])and(not g[b[i],a[i]]) then begin
inc(ans); d[ans]:=i;
end;
writeln(ans); for i:=1 to ans do writeln(d[i]);
end;
begin
main;
end.
RQNOJ 篝火晚會
題目描述 佳佳剛進高中,在軍訓的時候,由於佳佳吃苦耐勞,很快得到了教官的賞識,成為了 小教官 在軍訓結束的那天晚上,佳佳被命令組織同學們進行篝火晚會。一共有n個同學,編號從1到n。一開始,同學們按照1,2,n的順序坐成一圈,而實際上每個人都有兩個最希望相鄰的同學。如何下命令調整同學的次序,形成新的乙...
其他 RQNOJ 排考場
期中考之前,總要排一下試場。張校長為此心煩 每個試場擁有的桌椅數不同。為了排試場,不免有些桌子要被移到別的試場去。為了減少移動量,張校長決定再開m個試場 m盡量要小,這是人之常情 將每個試場多餘的桌椅放入新試場內。由於教育局規定 每個試場的桌椅數必須相同。張校長犯難了,於是他找到學noip的你,希望...
其他 RQNOJ 誰拿了獎學金
期中考考完了,總要排排名次。該校有個特殊的規定 前m m 60 名學生有獎學金可以拿。面對那批堆積如山的試卷,王主任茫然無措,於是他來向懂noip的你來求救,希望你能幫助他。注 該校的名次的排列方式為 先排平均分,若平均分相同,則計算方差,方差小的學生排在前面,若方差也相同,則按考號的先後排列 考號...