讨论 / 为什么是无输出?
Aule 2009-06-06 23:28:00
点我顶贴 收藏 删除
第一个点无输出……

状态: Unaccepted

测评机: Xeost[5]

得分: 90分

提交日期: 2009-6-6 23:12:00

有效耗时: 1204毫秒

测试结果1: 选手程序无输出

测试结果2: 通过本测试点|有效耗时47ms

测试结果3: 通过本测试点|有效耗时157ms

测试结果4: 通过本测试点|有效耗时62ms

测试结果5: 通过本测试点|有效耗时157ms

测试结果6: 通过本测试点|有效耗时157ms

测试结果7: 通过本测试点|有效耗时156ms

测试结果8: 通过本测试点|有效耗时156ms

测试结果9: 通过本测试点|有效耗时156ms

测试结果10: 通过本测试点|有效耗时156ms

程序是:

program r196;

type jl=record

l,r:integer;

lt,rt:longint;

end;

var i,sum,p,n,t1,t2,t3:longint;

e:array [0..100] of jl;

vis:array [0..100] of boolean;

procedure ss(v:integer);

begin

vis[v] := true;

if v=p then begin

writeln(sum);

halt;

end;

if e[v].lt<=e[v].rt then begin

if (e[v].l<>-1)and(not vis[e[v].l]) then begin

inc(sum,e[v].lt);

ss(e[v].l);

inc(sum,e[v].lt);

end;

if (e[v].r<>-1)and(not vis[e[v].r]) then begin

inc(sum,e[v].rt);

ss(e[v].r);

inc(sum,e[v].rt);

end;

end

else begin

if (e[v].r<>-1)and(not vis[e[v].r]) then begin

inc(sum,e[v].rt);

ss(e[v].r);

inc(sum,e[v].rt);

end;

if (e[v].l<>-1)and(not vis[e[v].l]) then begin

inc(sum,e[v].lt);

ss(e[v].l);

inc(sum,e[v].lt);

end;

end;

end;

begin

readln(n,p);

fillchar(vis,sizeof(vis),false);

for i := 0 to 100 do begin

e[i].l := -1;

e[i].r := -1;

e[i].lt := maxlongint;

e[i].rt := maxlongint;

end;

for i := 2 to n do begin

readln(t1,t2,t3);

if e[t1].l=-1 then begin

e[t1].l := t2;

e[t1].lt := t3;

end

else begin

e[t1].r := t2;

e[t1].rt := t3;

end;

end;

sum := 0;

ss(0);

end.

#1 小小小学生@2009-06-06 23:28:00
回复 删除
不介意的话 看下我的吧

program li;

var n,p,ans:longint;

a:array[0..101,0..100] of longint;

f:array[0..101] of boolean;

procedure init;

var x,y,i:longint;

begin

readln(n,p);

for i:=2 to n do

begin

read(x,y);

readln(a[x,y]); a[y,x]:=a[x,y];

end;

f[0]:=false; ans:=0;

for i:=1 to n do f[i]:=true;

end;

procedure digui(x:longint);

var i,j,min,xx:longint;

begin

if x=p then begin writeln(ans); halt; end;

min:=maxlongint; xx:=-1;

for i:=1 to n do

if (a[x,i]<min) and (a[x,i]<>0) and (f[i]) then

begin xx:=i; min:=a[x,i]; end;

if xx<>-1 then

begin f[xx]:=false; ans:=ans+a[x,xx]; digui(xx); end;

ans:=ans+a[x,xx];

if xx<>-1 then digui(x);

end;

begin

init;

digui(0);

end.

查看更多回复
提交回复