POJ 1041 John's trip (欧拉回路)

2015-07-20 17:18:03 · 作者: · 浏览: 5

题目地址:POJ 1041

题目要求是字典序,所以要先对边号进行排序,使得每次总是先遍历到边号较小的点。用vector比较方便。

代码如下:

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
         #include 
         
           #include 
          
            using namespace std; #define LL long long #define pi acos(-1.0) const int mod=1e9+7; const int INF=0x3f3f3f3f; const double eqs=1e-9; const int MAXN=2000+10; int stk[2000000], deg[2000000], tot, vis[2000000]; vector 
           
             >vec[MAXN]; void add(int u, int v, int id) { vec[u].push_back(make_pair(id,v)); vec[v].push_back(make_pair(id,u)); } void dfs(int u) { for(int i=0;i
            
             0) puts("Round trip does not exist."); else{ for(i=1;i<=n;i++){ if(vec[i].size()) sort(vec[i].begin(),vec[i].end()); } dfs(1); if(tot
             
              =0;i--){ printf("%d",stk[i]); if(i) printf(" "); } printf("\n"); } } } return 0; }