Cod sursa(job #2121055)

Utilizator IuliaBarbuBarbu Iulia Andreea IuliaBarbu Data 3 februarie 2018 11:30:33
Problema Ciclu Eulerian Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int>lista[100001];
int main ()
{
    ifstream f("ciclueuler.in");
    ofstream g("ciclueuler.out");
    int k=0,i,x,y,nod,fiu,N,M,st[500001];
    f>>N>>M;
    for(i=1;i<=M;i++)
    {
        f>>x>>y;
        lista[x].push_back(y);
        lista[y].push_back(x);
    }
    int ok=0;
    for(i=1;i<=N&&ok==0;i++)
    {
        if(lista[i].size()%2!=0)
            ok=1;
    }
    if(ok==1)
        g<<-1;
    else
    {
        k=1;
        st[1]=1;
        while(k>0)
        {
            nod=st[k];
            if(lista[nod].size()!=0)
            {
                fiu=lista[nod].back();
                k++;
                st[k]=fiu;
                lista[nod].pop_back();
                lista[fiu].erase(find(lista[fiu].begin(),lista[fiu].end(),nod));
            }
            else
            {
                if(k!=1)
                    g<<st[k]<<" ";
                k--;
            }
        }
    }
    return 0;
}