Mai intai trebuie sa te autentifici.

Cod sursa(job #1793986)

Utilizator Emil64Emil Centiu Emil64 Data 31 octombrie 2016 19:02:31
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

struct _muchie{
    int a, b;
} muchie[500001]={0};

vector<int> v[100001];
bool folosit[500001]={0};
int sol[500001]={0}, lg;

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

void read(int& nr){
    f>>nr;
}

void euler(int nod){

    int w;
    while(!v[nod].empty()){

        w = v[nod].back();
        v[nod].pop_back();
        if(!folosit[w]){
            folosit[w] = true;
            if(muchie[w].a == nod)
                euler(muchie[w].b);
            else euler(muchie[w].a);
        }
    }
    sol[++lg] = nod;
}

int main()
{
    int i, j, n, m, nod, w, a, b;
    read(n);read(m);
    for(i=1; i<=m; i++){

        read(a);read(b);
        v[a].push_back(i);
        v[b].push_back(i);
        muchie[i].a = a;
        muchie[i].b = b;
    }

    for(i=1; i<=n; i++)
        if(v[i].size() % 2){

            g<<"-1\n";
            return 0;
        }
    euler(1);
    for(i=1; i<lg; i++)
        g<<sol[i]<<" ";

}