Cod sursa(job #1252718)

Utilizator valen.valentinValentin Valeanu valen.valentin Data 31 octombrie 2014 08:37:37
Problema Asmax Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.81 kb
program asmax;
type
lista=^date;
date=record
m:longint;
next:lista;
end;
tabel=array[0..16001] of lista;
tab=array[0..16001] of longint;
var
t:tabel; a:lista;
v,fr:tab; f1,f2:text;
n,i,j,max,x,y:longint;
function dfs(x:longint):longint;
var a:lista; s:longint;
begin
a:=t[x]; s:=v[x];
while a<>nil do begin
if fr[a^.m]=0 then begin
fr[a^.m]:=1;
x:=dfs(a^.m);
if x>0 then s:=s+x;
end;
a:=a^.next;
end;
if s>max then max:=s;
dfs:=s;
end;
begin
assign (f1,'asmax.in');
assign (f2,'asmax.out');
reset (f1);
rewrite (f2);
readln (f1,n);
for i:=1 to n do read (f1,v[i]);
while not eof(f1) do begin
readln (f1,x,y);
new(a);
a^.m:=x;
a^.next:=t[y];
t[y]:=a;
new(a);
a^.m:=y;
a^.next:=t[x];
t[x]:=a;
end;
max:=-100000000; fr[1]:=1;
dfs(1);
writeln (f2,max);
close (f1);
close (f2);
end.