level 5
折わた翼
楼主
program prison;
var f:array[1..20000,1..20000] of longint;
n,m,i,j,k,max,max1,maxi,maxj:integer;
t:boolean;
procedure recor(x,y:integer);
begin
maxi:=x;
maxj:=y;
max1:=abs(f[x,y]);
end;
procedure mark(x,y,z:integer);
begin
if f[y,x]<f[z,x] then f[y,x]:=-f[y,x] else f[z,x]:=-f[z,x];
end;
begin
readln(n,m);
for i:=1 to m do
begin
read(j,k);
readln(f[j,k]);
end;
repeat
max1:=0;
t:=true;
for i:=1 to n do
for j:=i+1 to n do
begin
if max1<abs(f[i,j]) then recor(i,j);
if f[i,j]>0 then t:=false;
end;
if f[maxi,maxj]<0 then max1:=f[maxi,maxj] else f[maxi,maxj]:=0;
for i:=maxj+1 to n do
if (f[maxi,i]>0) and (f[maxj,i]>0) then mark(i,maxi,maxj);
until (max1<0) or t;
if t then write(0) else write(abs(max1));
end.
用并查集写的代码
在RQNOJ上测评0分 原因是无结果输出
但是在本机上已经过了样例数据了
为什么....
2010年11月22日 06点11分
1
var f:array[1..20000,1..20000] of longint;
n,m,i,j,k,max,max1,maxi,maxj:integer;
t:boolean;
procedure recor(x,y:integer);
begin
maxi:=x;
maxj:=y;
max1:=abs(f[x,y]);
end;
procedure mark(x,y,z:integer);
begin
if f[y,x]<f[z,x] then f[y,x]:=-f[y,x] else f[z,x]:=-f[z,x];
end;
begin
readln(n,m);
for i:=1 to m do
begin
read(j,k);
readln(f[j,k]);
end;
repeat
max1:=0;
t:=true;
for i:=1 to n do
for j:=i+1 to n do
begin
if max1<abs(f[i,j]) then recor(i,j);
if f[i,j]>0 then t:=false;
end;
if f[maxi,maxj]<0 then max1:=f[maxi,maxj] else f[maxi,maxj]:=0;
for i:=maxj+1 to n do
if (f[maxi,i]>0) and (f[maxj,i]>0) then mark(i,maxi,maxj);
until (max1<0) or t;
if t then write(0) else write(abs(max1));
end.
用并查集写的代码
在RQNOJ上测评0分 原因是无结果输出
但是在本机上已经过了样例数据了
为什么....