哈密爾頓環(圖論演算法)
阿新 • • 發佈:2019-01-22
var
g:array[1..100,1..100]of longint;
start,i,long,x,y,k,n,m:longint;
visited,v1:array[1..100]of boolean;
ans,num:array[1..100]of longint;
procedure print;
var
i:longint;
begin
for i:=1 to long
do
write(' ',ans[i]);
writeln;
end;
procedure dfs(i:longint);
var
j:longint;
begin
visited[i]:=true;
v1[i]:=true;
inc(long);
ans[long]:=i;
if (long>1) and
(ans[long]=ans[1]) then print;
for j:=1 to num[i]
do
if
(not visited[g[i,j]]) then dfs(g[i,j]);
dec(long);
visited[i]:=false;
end;
begin
readln(n,m);
for i:=1 to m do
begin
readln(x,y);
inc(num[x]);
inc(num[y]);
g[x,num[x]]:=y;
g[y,num[y]]:=x;
end;
fillchar(visited,sizeof(visited),false);
fillchar(v1,sizeof(v1),false);
for k:=1 to n do
if (not v1[x]) then
begin long:=0; dfs(x); end;
end.