var w:array[1..1000,1..1000] of integer;
vis:array[1..1000] of boolean;
step:array[1..1000] of integer; //路径
tot_r,tot_w,t1,t2,t3,n,m,i:integer;
procedure print(k:integer);
var i:integer;
begin
for i:=1 to k do write(step[i],' ');
writeln(' ',tot_w);
end;
procedure dfs(u,k:integer);
var i:integer;
begin
if u=n then begin inc(tot_r); print(k); exit; end;
for i:=1 to n do begin
if (w[u,i]<>0) and not vis[i] then begin
vis[i]:=true;
tot_w:=tot_w+w[u,i];
step[k+1]:=i;
dfs(i,k+1);
vis[i]:=false;
tot_w:=tot_w-w[u,i];
end;
end;
end;
begin
fillchar(w,sizeof(w),0);
fillchar(vis,sizeof(vis),false); //false未访问
tot_r:=0;tot_w:=0;
readln(n,m);
for i:=1 to m do begin
readln(t1,t2,t3);
w[t1,t2]:=t3;
w[t2,t1]:=t3;
end;
step[1]:=1;
vis[1]:=true;
dfs(1,1);
writeln(tot_r);
end.
【图论】【搜索】【DFS】邻接矩阵+pascal实现模板
最新推荐文章于 2024-08-12 19:31:56 发布