测试结果2: 通过本测试点|有效耗时172ms
测试结果3: 通过本测试点|有效耗时172ms
测试结果4:
测试结果5:
测试结果6:
测试结果7:
测试结果8:
测试结果9:
测试结果10:
提交代码:
var i,k,m,n,ans,max,x,y:longint;
s,t,w:array[0..1100]of longint;
c:array[0..1100,0..1100]of longint;
function find(x : longint):longint;
var i : longint;
begin
if s[x]=1 then exit(0);
inc(ans,w[x]);
inc(k);
s[x]:=1;
if k=m then
begin
if ans>max then max:=ans;
end else
for i:=1 to c[x,0] do find(c[x,i]);
dec(ans,w[x]);
dec(k);
s[x]:=0;
exit(0);
end; { find }
begin
assign(input,'input.txt');
assign(output,'output.txt');
reset(input);rewrite(output);
readln(n,m);ans:=0;
for i:=1 to n do read(w[i]);
readln();
for i:=1 to n do
begin
readln(x,y);
s[i]:=x;
t[i]:=y;
end;k:=0;
fillchar(c,sizeof(c),0);
for i:=1 to n do
begin
inc(c[s[i],0]);
c[s[i],c[s[i],0]]:=t[i];
inc(c[t[i],0]);
c[t[i],c[t[i],0]]:=s[i];
end;
fillchar(s,sizeof(s),0);
for i:=1 to c[0,0]do find(c[0,i]);
writeln(max);
close(input);
close(output);
end.