Cod sursa(job #2101918)

Utilizator LucaSeriSeritan Luca LucaSeri Data 8 ianuarie 2018 11:26:26
Problema Ciclu Eulerian Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1e5 + 10;

ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");

map< pair<int, int>, bool> viz;

vector< int > gr[MAXN];
int grad[MAXN];

void dfs(int node){
    for(auto x : gr[node]){
        if(!viz[{node, x}]){
            viz[{node, x}] = viz[{x, node}] = true;
            dfs(x);
        }
    }
    g << node << ' ';
}
int main(){
    int n, m;
    f >> n >> m;
    for(int i = 1; i <= m; ++i){
        int a, b;
        f >> a >> b;
        gr[a].push_back(b);
        gr[b].push_back(a);
        grad[a] ++;
        grad[b] ++;
    }

    for(int i = 1; i <= n; ++i){
        if(grad[i]&1 || grad[i] == 0){
            g << -1;
            return 0;
        }
    }

    dfs(1);
    return 0;
}