1. 程式人生 > >哈密爾頓環(圖論演算法)

哈密爾頓環(圖論演算法)

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.