初一16班 麦睿生 • 6个月前
#include<bits/stdc++.h>
using namespace std;
int start,length,x,n;
bool visited[101],vl[101];
int ans[101],num[101];
int g[101][101];
void print()
{
int i;
for(i=1;i<=length-1;i++)
{
cout<<ans[i]<<" ";
}
cout<<ans[length]<<endl;
}
void dfs(int last,int i)
{
visited[i]=true;
vl[i]=true;
ans[++length]=i;
for(int j=1;j<=num[i];j++)
{
if(g[i][j]==x&&g[i][j]!=last)
{
ans[++length]=g[i][j];
print();
length--;
break;
}
if(!visited[g[i][j]])dfs(i,g[i][j]);
}
length--;
visited[i]=false;
}
int main()
{
memset(visited,false,sizeof(visited));
memset(vl,false,sizeof(vl));
cin>>n;
int m;
cin>>m;
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
g[x][++num[x]]=y;
g[y][++num[y]]=x;
}
for(x=1;x<=n;x++)
{
if(!vl[x])
{
length=0;
dfs(0,x);
}
}
return 0;
}
//是什么问题?
评论: