题目链接:点击打开链接
题目大意:略。
解题思路:略。
AC 代码
#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=1010;
int g[1010][1010], ans[2*maxn], vis[maxn];
int n,m,s,len;
void init()
{
len=0;
mem(g,0);
mem(vis,0);
}
void dfs(int s)
{
vis[s]=1;
for(int i=1; i<=n; i++)
{
if(g[s][i]==1&&!vis[i])
{
ans[len++]=i;
g[i][s]=g[s][i]=-1;
dfs(i);
ans[len++]=s;
}
}
}
int main()
{
while(~scanf("%d%d%d",&n,&m,&s))
{
init();
int u,v;
for(int i=0;i<m;i++)
{
scanf("%d%d",&u,&v);
g[u][v]=g[v][u]=1;
}
ans[len++]=s;
dfs(s);
for(int i=1;i<=n;i++)
if(vis[i]!=1){ ans[len++]=0; break; }
printf("%d",ans[0]);
for(int i=1;i<len;i++) printf(" %d",ans[i]);
puts("");
}
return 0;
}