Cod sursa(job #1386704)

Utilizator BogdanOuatuOuatu Bogdan-Ioan BogdanOuatu Data 13 martie 2015 10:41:55
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector <int> a[100004];
int ok;
void Euler(int x)
{
    while(!a[x].empty())
    {
        int y=a[x][a[x].size()-1];
        std::vector<int>::iterator it;
        it = find (a[y].begin(), a[y].end(),x);
        int k=a[x][a[x].size()-1];
        a[x].pop_back();
        a[y].erase(it);

        Euler(k);

    }
//    if(x==1)
//    {
//        if(ok==0)
//        {fout<<x<<' ';ok++;}
//    }
//    else
        fout<<x<<' ';
}
int main()
{
    int n,m,i,u,v;
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>u>>v;
        a[u].push_back(v);
        a[v].push_back(u);
    }
//    for(i=1;i<=n;i++)
//        {for(int j=0;j<a[i].size();j++)
//            cout<<a[i][j]<<' ';
//        cout<<'\n';}
    for(i=1;i<=n;i++)
        if(a[i].size()&1)
           {
               fout<<"-1\n";
               fin.close();
               fout.close();
               return 0;
           }

    Euler(1);

    return 0;
}