Cod sursa(job #1979743)

Utilizator Chirita_MateiChirita Matei Chirita_Matei Data 11 mai 2017 11:46:30
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
#define NMAX 100010
#define MMAX 500010
using namespace std;
ofstream fout("ciclueuler.out");
ifstream fin("ciclueuler.in");

vector <pair<int,int> > v[NMAX];
int viz[MMAX], a[NMAX], n, m, x, y;

void euler(int nod)
{
    int lg = v[nod].size();

    for(int i = 0; i < lg; ++i){
        if(viz[v[nod][i].second] == 0){
            viz[v[nod][i].second] = 1;
            euler(v[nod][i].first);
        }
    }

    fout << nod << ' ';
}

int main()
{
    fin >> n >> m;

    for(int i = 1; i <= m; ++i){
        fin >> x >> y;

        v[x].push_back({y,i});
        v[y].push_back({x,i});

        a[x]++;
        a[y]++;
    }

    for(int i = 1; i <= n; ++i){
        if(a[i]%2 == 1){
            fout << -1;
            return 0;
        }
    }

    euler(1);

    return 0;
}