#include <stdio.h> #include <stdlib.h> #include <string.h> int G[510][510]; int n, f; int path[2000]; int degree[510]; int index; void dfs(int u){ for(int v = 1;v <= n; v++){ if(G[u][v]){ G[u][v]--; G[v][u]--; dfs(v); } } path[index++] = u; } int main() { while(scanf("%d",&f) != EOF){ memset(G,0,sizeof(G)); memset(path,0,sizeof(path)); memset(degree,0,sizeof(degree)); n = 0; for(int i = 0;i < f; i++){ int a, b; scanf("%d%d",&a,&b); G[a][b]++; G[b][a]++; degree[a]++; degree[b]++; int temp = a < b ? b : a; n = n < temp ? temp : n; } int st = 1; for(int i = 1;i <= n; i++){ if((degree[i] & 1) == 1){ st = i; break; } } index = 0; dfs(st); for(int i = index-1;i>=0;i--){ printf("%d\n",path[i]); } } return 0; } /************************************************************** Problem: 2054 User: admin Language: C Result: Accepted Time:39 ms Memory:2172 kb ****************************************************************/