Cod sursa(job #1514854)

Utilizator refugiatBoni Daniel Stefan refugiat Data 31 octombrie 2015 18:41:27
Problema Ciclu Eulerian Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<iostream>
#include<fstream>
#include<algorithm>
#include<list>
using namespace std;
ifstream si("ciclueuler.in");
ofstream so("ciclueuler.out");
list<int> l[1000005];
int cic[5000005],lg;
list<int>::iterator findp(int p,int pct)
{
    list<int>::iterator i;
    for(i=l[pct].begin();i!=l[pct].end();++i)
        if(*i==p)
            return i;
}
void ciclu(int p)
{
    int pct;
    while(!l[p].empty())
    {
        pct=l[p].front();
        l[p].pop_front();
        l[pct].erase(findp(p,pct));
        ciclu(pct);
    }
    cic[lg++]=p;
}
int main()
{
    int n,m;
    si>>n>>m;
    int i,a,b;
    for(i=0;i<m;++i)
    {
        si>>a>>b;
        l[a].push_back(b);
        l[b].push_back(a);
    }
    ciclu(1);
    if(lg<m||m%2==1)
        so<<-1;
    else
        for(i=1;i<lg;++i)
            so<<cic[i]<<' ';
}