| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我没辙了不可能有错了呀!大虾们看一下!我是每个房间枚举双向路径的,用迭代做的,这是代码:
type arr1=array[1..100,1..2]of longint;
arr=array[1..500]of record
w:longint;
st:arr1;
end;
var a,b:arr;
c:array[1..500]of longint;
g,m,n,i,j,l,t,s:longint;
begin
readln(n,m);
for i:=1 to m do
begin
read(a[i].w);
a[i].st[1,1]:=i;
end;
readln;
for i:=2 to n do
begin
for j:=1 to m do
read(c[j]);
readln;
for j:=1 to m do
begin
s:=maxlongint;
t:=0;
g:=j;
for l:=j downto 1 do
begin
t:=t+c[l];
if t+a[l].w<s
then begin
s:=t+a[l].w;
g:=l;
end;
end;
t:=0;
for l:=j to m do
begin
t:=t+c[l];
if t+a[l].w<s
then begin
s:=t+a[l].w;
g:=l;
end;
end;
b[j].w:=s;
b[j].st:=a[j].st;
b[j].st[i,1]:=g;
b[j].st[i,2]:=j;
b[j].st[1,1]:=a[g].st[1,1];
end;
a:=b;
end;
g:=1;
for i:=2 to m do
if a[i].w<a[g].w
then g:=i;
writeln(a[g].st[1,1]);
for i:=2 to n do
if a[g].st[i,1]<a[g].st[i,2]
then for j:=a[g].st[i,1] to a[g].st[i,2] do
writeln(j)
else for j:=a[g].st[i,1] downto a[g].st[i,2] do
writeln(j);
end.
帮我找找错吧!我测了一些特殊数据,都没问题的。也可以给点数据看看!谢谢谢谢!
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator