Cod sursa(job #1738290)

Utilizator refugiatBoni Daniel Stefan refugiat Data 6 august 2016 13:26:31
Problema Ciclu Eulerian Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <stack>
using namespace std;
ifstream si("ciclueuler.in");
ofstream so("ciclueuler.out");
vector<int> v[100005];
stack<int> q;
int cic[500010],lg;
int main()
{
    int n,m;
    si>>n>>m;
    int i,a,b;
    for(i=0;i<m;++i)
    {
        si>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    int imp=0;
    for(i=1;i<=n;++i)
    {
        if(v[i].size()&1)
        {
            imp=1;
            break;
        }
    }
    if(imp)
    {
        so<<-1;
    }
    else
    {
        q.push(1);
        while(!q.empty())
        {
            a=q.top();
            if(!v[a].empty())
            {
                b=v[a].back();
                v[a].pop_back();
                v[b].erase(find(v[b].begin(),v[b].end(),a));
                q.push(b);
            }
            else
            {
                cic[lg]=a;
                ++lg;
            q.pop();
            }
        }
        for(i=0;i<lg-1;++i)
            so<<cic[i]<<' ';
    }
    return 0;
}