Cod sursa(job #1249219)

Utilizator sorynsooSorin Soo sorynsoo Data 26 octombrie 2014 18:05:12
Problema Ciclu Eulerian Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<algorithm>
#include<stack>
#include<vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m,i,x,y;
vector<int> l[100100];
stack<int> st;
int main()
{
    f>>n>>m;
    for(i=1;i<=m;++i)
    {
        f>>x>>y;
        l[x].push_back(y);
        l[y].push_back(x);
    }
    for(i=1;i<=n;++i)
    if((!l[i].size())||(l[i].size()&1))
    {
        g<<"-1\n";
        return 0;
    }
    st.push(1);
    while(!st.empty())
    {
        x=st.top();
        if(!l[x].size())
        {
            st.pop();
            if(!st.empty())
            g<<x<<" ";
        }
        else
        {
            y=l[x].back();
            st.push(y);
            l[x].pop_back();
            l[y].erase(find(l[y].begin(),l[y].end(),x));
        }
    }
    g<<'\n';
    return 0;
}