| ||||||||||
| 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 | |||||||||
树形DP……水过。var a,b,c,d,e,m,n,sum,max:longint;
f1,f2:array[0..100000]of longint;
list,next,cost,toit:array[0..1000000]of longint;
ch:char;
procedure make(i,j,k:longint);
begin
inc(sum);
toit[sum]:=j;
next[sum]:=list[i];
cost[sum]:=k;
list[i]:=sum;
end;
procedure dfs(i,j:longint);
var ii,jj,kk:longint;
begin
f1[i]:=0;f2[i]:=0;
ii:=list[i];
while ii<>0 do
begin
if toit[ii]<>j then
begin
dfs(toit[ii],i);
if f1[toit[ii]]+cost[ii]>f1[i] then
begin
f2[i]:=f1[i];
f1[i]:=f1[toit[ii]]+cost[ii];
end
else if f1[toit[ii]]+cost[ii]>f2[i] then f2[i]:=f1[toit[ii]]+cost[ii];
end;
ii:=next[ii];
end;
end;
begin
readln(n,m);
for a:=1 to m do
begin
readln(b,c,d);
make(b,c,d);
make(c,b,d);
end;
dfs(1,0);
for a:=1 to n do
if f1[a]+f2[a]>max then
max:=f1[a]+f2[a];
writeln(max);
end.
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator