Cod sursa(job #2298511)

Utilizator danin01Nastase Daniel danin01 Data 8 decembrie 2018 11:14:54
Problema Ciclu Eulerian Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <queue>
#include <utility>
#include <vector>
using namespace std;

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

int n,m,k,sol[1000005];

vector<pair<int,int> >v[100005];

bool viz[100001];

void ciclu(int src)
{

    while(!v[src].empty())
    {

        pair<int,int> nod = v[src].back();
        v[src].pop_back();

        if(!viz[nod.second])
        {

            viz[nod.second]=true;
            ciclu(nod.first);

        }

    }
    k++;
    sol[k]=src;

}

int main()
{

    f>>n>>m;

    for(int i=1;i<=m;++i)
    {
        int x,y;
        f>>x>>y;
        v[x].push_back(make_pair(y,i));
        v[y].push_back(make_pair(x,i));

    }

    for(int i=1;i<=n;++i)
    {
        if(v[i].size()%2)
        {
            g<<"-1";
            return 0;
        }
    }
    ciclu(1);

    for(int i=1;i<k;++i)
    {
        g<<sol[i]<<" ";
    }

    return 0;
}