Pagini recente » Cod sursa (job #2317321) | Cod sursa (job #807300) | Cod sursa (job #518307) | Cod sursa (job #2657125) | Cod sursa (job #598881)
Cod sursa(job #598881)
const f = 'asmax.in'; g = 'asmax.out';
type pnod = ^nod;
nod = record
next : pnod;
info : longint;
end;
var
a : array[0..100001] of pnod;
viz,c : array[0..100001] of longint;
x, y, start, m, n : longint;
s, vf, max, nrc, i : longint;
p : pnod;
buf, buf1 : array[1..1 shl 17] of char;
procedure add( var dest : pnod; val : longint );
var
q : pnod;
begin
new( q );
q^.info := val;
q^.next := dest;
dest := q;
end;
procedure dfs( nod : longint );
var
q : pnod;
begin
write(nod,' ');
viz[nod] := 1;
q := a[nod];
while q <> nil do begin
if viz[q^.info] = 0 then dfs( q^.info ) ;
q := q^.next;
end;
//writeln;
end;
begin
assign( input,f ); reset( input );
assign( output,g ); rewrite( output );
settextbuf( input,buf );
settextbuf( output,buf1 );
readln(n, m );
for i := 1 to n do read(c[i]);
for i:=1 to m do begin
readln(x, y);
add( a[x], y );
add( a[y], x );
end;
for i := 1 to n do
begin
s := 0;
p := a[i];
//write('vecinii lui',' ',i,' ',':');
while p <> nil do begin
//write(p^.info );
s := s + c[p^.info];
p := p^.next;
end;
//writeln( );
s := s + c[i];
if s > max then max := s;
end;
{
for i := 1 to n do
begin
//if viz[i] = 0 then begin
write('dfs ',i,' : ');
fillchar(viz,sizeof(viz),0);
dfs(i);
writeln;
//inc( nrc );
end;
writeln( nrc,' ',max );
}
writeln( max );
end.