Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <vector>
- using namespace std;
- struct arc{
- int x;
- int y;
- bool vu;
- arc(int a=0, int b=0,bool t=false):x(a),y(b),vu(t){}
- };
- int N,A;
- const int MAX_NOEUD = 1002;
- const int MAX_AR = 10* 1000;
- vector<int> graphe[MAX_NOEUD];
- arc tab[MAX_AR];
- void eulerien(){
- int i = 0;
- int sommet = 1 , suivant;
- while( i < A){
- suivant = graphe[sommet].back();
- graphe[sommet].pop_back();
- if(!tab[suivant].vu){
- cout << sommet << " ";
- i++;
- tab[suivant].vu = true;
- sommet = sommet ^ tab[suivant].x ^ tab[suivant].y;
- }
- }
- cout << sommet ;
- return ;
- }
- int main(){
- cin >> N >> A;
- int i, j;
- for(int arr = 0; arr < A; arr++){
- scanf("%d %d", &i,&j);
- tab[arr]=arc(i,j);
- graphe[i].push_back(arr);
- graphe[j].push_back(arr);
- }
- for(int i = 1; i < N; i++)
- if( (int) graphe[i].size()%2 == 1){
- cout << "-1";
- return 0;
- }
- eulerien();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement