a,g:array[0..251,0..251]of longint;
w,s:array[0..251]of boolean;
f:array[0..251]of longint;
n,m,i,min:longint;
procedure init;
var x,y,t,i:longint;
begin
readln(n,m);
fillchar(v,sizeof(v),#0);
fillchar(w,sizeof(w),#0);
fillchar(s,sizeof(s),#0);
fillchar(a,sizeof(a),0);
fillchar(g,sizeof(g),0);
fillchar(f,sizeof(f),0);
for i:=1 to m do
begin
readln(x,y,t);
v[x,y]:=true;
v[y,x]:=true;
a[x,y]:=t;
a[y,x]:=t;
inc(g[x,0]);
g[x,g[x,0]]:=y;
inc(g[y,0]);
g[y,g[y,0]]:=x;
if(x=y)then min:=t;
end;
end;
{--------------------------}
procedure dfs(x,tot:longint);
var i:longint;
begin
if(tot<min)then
begin
if(w[x]=true)and(f[x]<>0)then
begin
s[x]:=true;
if min>tot-f[x]then min:=tot-f[x];
end
else
begin
f[x]:=tot;
begin
for i:=1 to g[x,0] do
if(v[x,g[x,i]]=true)and(tot+a[x,g[x,i]]<min)then
begin
w[g[x,i]]:=true;
v[x,g[x,i]]:=false;
v[g[x,i],x]:=false;
dfs(g[x,i],tot+a[x,g[x,i]]);
w[g[x,i]]:=false;
v[x,g[x,i]]:=true;
v[g[x,i],x]:=true;
end;
end;
f[x]:=0;
end;
end;
end;
{--------------------------}
BEGIN
init;
min:=maxlongint;
for i:=1 to n do
if(s[i]=false)then
begin
w[i]:=true;
dfs(i,0);
w[i]:=false;
end;
if min=maxlongint then
writeln('He will never come back.')
else writeln(min);
END.
貌似数据奇弱,优化和没优化基本没有区别,第10个点还比正解快了100MS
但是第三个点怎么也过不了。。