Rqnoj 306 破壞石油運輸系統問題

2021-06-03 00:17:48 字數 1891 閱讀 1560

破壞石油運輸系統問題

網路流題,關鍵在於,此題求的不是飽和弧,可能存在的情況是:存在兩條流量相同的並行路徑,正確的做法是:把非飽和弧連上,建乙個圖,則一條滿足條件的路徑應該是兩端點不連通(顯然是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的你來求救,希望你能幫助他。注 該校的名次的排列方式為 先排平均分,若平均分相同,則計算方差,方差小的學生排在前面,若方差也相同,則按考號的先後排列 考號...