题目链接:点击打开链接
题目大意:略。
解题思路:略。
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; }