Cod sursa(job #2344769)

Utilizator ApolodorTudor Fernea Apolodor Data 15 februarie 2019 16:44:10
Problema Ciclu Eulerian Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

ifstream fi("ciclueuler.in");
ofstream fo("ciclueuler.out");

int nr,n,m,x,y;
int sol[1000010];

vector <int> a[100004];

void euler(int k)
{
    while(!a[k].empty())
    {
        int urm=a[k].back();
        a[k].pop_back();
        for(int i=0; i<a[urm].size(); i++)
            if(a[urm][i]==k)
            {
                a[urm].erase(a[urm].begin()+i);
                break;
            }
        euler(urm);
    }
    sol[++nr]=k;
}

int main()
{
    fi>>n>>m;
    for(int i=1; i<=m; i++)
    {
        fi>>x>>y;
        a[y].push_back(x);
        a[x].push_back(y);
    }

    for(int i=1; i<=n; i++)
        if(!a[i].empty())
            euler(i);

    if(nr-1==m && sol[1]==sol[nr])
    for(int i=nr; i>=1; i--)
        fo<<sol[i]<<" ";
    else
        fo<<-1;
    return 0;
}