Cod sursa(job #2054884)

Utilizator vladboss2323Ciorica Vlad vladboss2323 Data 2 noiembrie 2017 17:20:15
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

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

const int N=100001;
const int M=500001;
vector<int>a[N];
bool viz[M];
int n,m,m1[M],m2[M],q[M],k=0;

void citire()
{
    int i;
    in>>n>>m;
    for(i=1; i<=m; i++)
    {
        in>>m1[i]>>m2[i];
        a[m1[i]].push_back(i);
        a[m2[i]].push_back(i);
    }
}

void dfs(int nod,int muchie)
{
    int i,indice;
    viz[muchie]=1;
    for(i=0; i<a[nod].size(); i++)
    {
        indice=a[nod][i];
        if(viz[indice]==0)
        {
            q[++k]=m1[indice];
            q[++k]=m2[indice];
            dfs(m2[indice],indice);
        }
    }

}
int main()
{
    int ok=1,i;
    citire();
    for(i=1; i<=n; i++)
        if(ok==1)
        {
            if(a[i].size()%2==1)
                ok=0;
        }
    if(ok==0)
        out<<-1;
    else
    {
        dfs(1,0);
        for(i=1; i<=k; i++)
            out<<q[i]<<" ";

    }
    return 0;
}