只有57分,实在找不出错误了,求助qwq
var
n,m,i,s,max,x,y,t:longint;
a:array[0..901] of longint;
c:array[0..501] of longint;
f:array[0..501] of boolean;
b:array[0..501,0..501] of boolean;
function cr(k:longint):boolean;
var
i:longint;
begin
for i:=1 to t do if k=c[i] then exit(false);
exit(true);
end;
function pd(k:longint):boolean;
var
i:longint;
begin
for i:=1 to t do if b[k,c[i]]=false then exit(false);
exit(true);
end;
procedure dfs(k:longint);
var
i:longint;
begin
for i:=1 to n do
if cr(i) then
if pd(i) then
if f[i] then
if b[i,k] then
begin
f[i]:=false;
s:=s+a[i];inc(t);c[t]:=i;
dfs(i);
end;
end;
begin
readln(n,m);
for i:=1 to n do readln(a[i]);
for i:=1 to m do begin readln(x,y);b[x,y]:=true;b[y,x]:=true;end;
for i:=1 to n do begin s:=0;t:=0;fillchar(f,sizeof(f),true);fillchar(c,sizeof(c),0);dfs(i);if s>max then max:=s;end;
writeln(max);
end.