Cod sursa(job #1170313)

Utilizator vrabievictorvictor vrabie vrabievictor Data 13 aprilie 2014 10:10:56
Problema Asmax Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.82 kb
program asmax;
type liste=^data;
data=record
x:longint;
next:liste;
end;
var t:array[1..16001]of liste;
viz:array[1..16001]of byte;
ss:array[1..16001]of longint;
n,i,k,x,max:longint; a:liste;
function dfs(x:longint):longint;
var a:liste;s:longint;
begin
a:=t[x]; s:=ss[x];
while a<>nil do
begin
if viz[a^.x]=0 then
begin
viz[a^.x]:=1;
x:=dfs(a^.x);
if x>0 then s:=s+x;
end;
a:=a^.next;
end;
if s>max then max:=s;
dfs:=s;
end;
begin
assign(input,'asmax.in');reset(input);
assign(output,'asmax.out');rewrite(output);
readln(n); for i:=1 to n do t[i]:=nil;
for i:=1 to n do
read(ss[i]); readln;
for i:=1 to n-1 do
begin
readln(k,x);
new(a);
a^.x:=x;a^.next:=t[k];t[k]:=a;
new(a);
a^.x:=k;a^.next:=t[x];t[x]:=a;
end;
max:=-1000000000;viz[1]:=1;
x:=dfs(1);
writeln(max);
close(input);close(output);
end.