Fzu2227
来源:互联网 发布:食品销售进销存软件 编辑:程序博客网 时间:2024/05/28 15:47
#include <iostream>#include <string>#include <string.h>#include <vector>#include <stdio.h>#include <algorithm>#include <map>std::vector<int> num ;std::map<int , int> Id ;const int N = 100008 ;int u[N] , v[N] , stk[N*2] , top ;std::vector<std::pair<int,int> > g[N] ;bool mark[N*2] ;void dfs(int now){ for(std::vector<std::pair<int,int> >::iterator it = g[now].begin() ; it != g[now].end() ; it++){ if (! mark[it->second]){ mark[it->second] = 1; dfs(it->first); stk[++top] = it->first ; } }}int deg[N*2] ;int main(){ int n ; while(scanf("%d",&n) != EOF){ num.clear() ; for(int i = 0 ; i < n ; i++){ scanf("%d%d" , &u[i] , &v[i]) ; num.push_back(u[i]) ; num.push_back(v[i]) ; } std::sort(num.begin() , num.end() ) ; int m = std::unique(num.begin() , num.end()) - num.begin() ; Id.clear() ; for(int i = 0 ; i < m ; i++){ Id[num[i]] = i ; } std::fill(deg , deg+m , 0) ; for(int i = 0 ; i < m ; i++) g[i].clear() ; for(int i = 0 ; i < n ; i++){ int uu = Id[u[i]] ; int vv = Id[v[i]] ; g[uu].push_back(std::make_pair(vv,i) ) ; g[vv].push_back(std::make_pair(uu,i) ) ; deg[uu]++ ; deg[vv]++ ; } int start = 0 ; for(int i = 0 ; i < m ; i++){ if(deg[i] & 1){ start = i ; break ; } } for(int i = 0 ; i < m ; i++) std::sort(g[i].begin() , g[i].end()) ; std::fill(mark , mark + m , 0) ; top = 0 ; dfs(start) ; printf("%d" , num[start]) ; for(int i = top ; i >=1 ; i--) printf(" %d" , num[stk[i]]) ; puts("") ; } return 0;}
0 0