Cod sursa(job #2813740)

Utilizator sabinandreiBocan Sabin Andrei sabinandrei Data 7 decembrie 2021 10:10:26
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb

#include <iostream>
#include <fstream>
#include <vector>
#include <map>

using namespace std;

ifstream in("euler.in");
ofstream out("euler.out");

vector <pair<int,int> > v[100002];
int a[500001];
int r[500001];
int g[500001];
int n,m;
int p;


void Euler(int k){
    while(!v[k].empty()){
        int x=v[k].back().first;
        int y=v[k].back().second;
        v[k].pop_back();
        if(a[y]==0)
        {
            a[y]=1;
            Euler(x);
        }
    }
    r[++p] = k;
}

int main(){
    in >> n >> m;
    for(int i=1;i<=m;i++){
        int x,y;
        in >> x >> y;
        g[x]++;
        g[y]++;
        v[x].push_back({y,i});
        v[y].push_back({x,i});
    }
    for(int i=1;i<=n;i++)
    {
        if(g[i]%2==1){
            out << -1;
            return 0;
        }
    }
    Euler(1);
    for(int i=1;i<=p;i++){
        out << r[i] << " ";
    }
    return 0;
}