Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. struct arc{
  8.    int x;
  9.    int y;
  10.    bool vu;
  11.    arc(int a=0, int b=0,bool t=false):x(a),y(b),vu(t){}
  12. };
  13.  
  14. int N,A;
  15. const int MAX_NOEUD = 1002;
  16. const int MAX_AR = 10* 1000;
  17.  
  18. vector<int> graphe[MAX_NOEUD];
  19. arc tab[MAX_AR];
  20.  
  21. void eulerien(){
  22.    int i = 0;
  23.    int sommet = 1 , suivant;
  24.    while( i < A){
  25.       suivant = graphe[sommet].back();
  26.       graphe[sommet].pop_back();
  27.       if(!tab[suivant].vu){
  28.          cout << sommet << " ";
  29.          i++;
  30.          tab[suivant].vu = true;
  31.          sommet = sommet ^ tab[suivant].x ^ tab[suivant].y;
  32.       }
  33.    }
  34.    cout << sommet ;
  35.    return ;
  36.  
  37. }
  38.  
  39. int main(){
  40.    cin >> N >> A;
  41.    int i, j;
  42.    for(int arr = 0; arr < A; arr++){
  43.       scanf("%d %d", &i,&j);
  44.       tab[arr]=arc(i,j);
  45.       graphe[i].push_back(arr);
  46.       graphe[j].push_back(arr);
  47.    }
  48.    
  49.    for(int i = 1; i < N; i++)
  50.       if( (int) graphe[i].size()%2 == 1){
  51.          cout << "-1";
  52.          return 0;
  53.       }
  54.    
  55.    eulerien();
  56.  
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement