Cod sursa(job #1972389)

Utilizator dumitrescu_andreiDumitrescu Andrei dumitrescu_andrei Data 22 aprilie 2017 23:03:27
Problema Ciclu Eulerian Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m;
vector <int> v[202],T;

void sterge(int u, int w)
{
    for(int i=0;i<v[u].size();++i)
        if(v[u][i]==w)
    {
        v[u].erase(v[u].begin()+i);
        break;
    }
}

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

    for(int i=1;i<=n;++i)
        sort(v[i].begin(),v[i].end());

    stack <int> S;

    S.push(1);

    while(!S.empty())
    {
        int u=S.top();
        if(!v[u].empty())
        {
            S.push(v[u][0]);
            sterge(v[u][0],u);
            v[u].erase(v[u].begin());
        }
        else
        {

            S.pop();
            T.push_back(u);
        }

    }

    if(T.size()!=(m+1))
    {
        g<<-1;
    }
    else
    {
        for(int i=0;i<T.size()-1;++i)
            g<<T[i]<<" ";
    }
    return 0;

}