Cod sursa(job #910154)

Utilizator D4n13LMuntean Dan Iulian D4n13L Data 10 martie 2013 19:07:08
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int N=100001;
struct pereche{
    int vf,poz;
}aux;
vector<pereche> a[N];
int n,nr,c[5*N],m;
void citire();
void euler(int x);
int main()
{
    citire();
    int i;

    euler(1);
    if(nr-1==m)
   {
        for(i=1;i<=nr;i++)
            out<<c[i]<<" ";

   }
   else out<<"-1";
    return 0;
}
void citire()
{

    int x,y,q,i;
    in>>n>>m;
    for(i=1;i<=m;i++)
    {

        in>>x>>y;
        if(x!=y){
        aux.vf=y;
        aux.poz=a[y].size();
        a[x].push_back(aux);
        aux.vf=x;
        aux.poz=a[x].size()-1;
        a[y].push_back(aux);
        }
        else
        {
            aux.vf=y;
        aux.poz=a[y].size();
        a[x].push_back(aux);
        }

    }
}


void euler(int x)
{
    int y,p;
    for(int i=0;i<a[x].size();i++)
    {
        y=a[x][i].vf;
        if(a[x][i].poz!=-1){
            p=a[x][i].poz;
            a[x][i].poz=-1;
            a[y][p].poz=-1;
            euler(y);
        }
    }
    c[++nr]=x;
}