que ;bool flag ; // 输出控制
int outLen ; // 判断是否可以遍历所有节点
void dfs() {
int sta = que.back() ; if(sta == s && vis[s]) return ;
int len = vt[sta].size(); if(len > 1)
sort(vt[sta].begin() ,vt[sta].end() , cmp);
for(int i = 0 ; i < len ;i++) {
int nextNum = vt[sta][i] ; if(!vis[nextNum]) {
if(!flag) // 打印入队列的路径
{
printf(\"%d\ flag = true ; outLen ++ ; }else{
printf(\" %d\ outLen ++ ; }
que.push_back(nextNum) ; vis[sta] = true ; dfs() ; } }
// 打印回去的路径
if(!que.empty()) // 当dfs 找不到的时候 就出队列 并设置为true 输出 {
int top = que.back() ; que.pop_back() ; vis[top] = true ; if(!flag) {
printf(\"%d\ flag = true ; outLen ++ ; }else{
printf(\" %d\ outLen ++ ; } } }
int main() {
//freopen(\"in.txt\
while( scanf(\"%d%d%d\ {
int i ;
int v1 , v2 ;
for(i = 1 ; i <= n ; i++) {
vt[i].clear() ; }
for(i = 0 ;i < m ; i++) {
scanf(\"%d%d\" , &v1 , &v2); vt[v1].push_back(v2) ; vt[v2].push_back(v1) ; }
for(i = 1 ; i <= n ; i++) {
vis[i] = false ; }
while(!que.empty()) {
que.pop_back(); }
que.push_back(s) ; flag = false ; outLen = 0 ; dfs();
if(outLen != 2*n -1) printf(\" 0\") ; printf(\"\\n\") ; }
return 0 ; }