Cod sursa(job #1139621)

Utilizator ThomasFMI Suditu Thomas Thomas Data 11 martie 2014 12:38:23
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

vector<int> v[100001],w[100001];

int k,n,m,a,b,i,cic[500001],nr,nn;
int viz[500001];

void euler(int x)
{
    for(int i=0;i<v[x].size();i++)
    {
        if(viz[w[x].at(i)]) continue;

        nn--;
        viz[w[x].at(i)]=1;
        euler(v[x].at(i));
        cic[++nr]=x;
    }
}

int main()
{
    f>>n>>m;
    nn=m;
    for(i=1;i<=m;i++)
    {
        f>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
        w[a].push_back(i);
        w[b].push_back(i);
    }

    euler(1);

    if(nn==0)
    {
        for(i=m;i>0;i--) g<<cic[i]<<" ";
        g<<"\n";
    }
    else g<<"-1";

    f.close();
    g.close();
    return 0;
}