Cod sursa(job #1594530)

Utilizator trutruvasilicaHuhurez Marius trutruvasilica Data 9 februarie 2016 15:54:45
Problema Ciclu Eulerian Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <stack>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
stack<int>S;
vector<int>H[100001];
vector<int>::iterator it;
bool verificare(int n)
{
    for(int i=1;i<=n;i++)
    {
        if(H[i].size()%2==1) return 0;
    }
    return 1;
}
int main()
{
    int n,m,a,b,p,i;
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>a>>b;
        H[a].push_back(b);
        H[b].push_back(a);
    }
    if(verificare(n)==0) {fout<<-1;return 0;}
    S.push(1);
    while(S.size())
    {
        a=S.top();
        if(H[a].size()>0)
        {
            p=H[a].back();
            H[a].pop_back();
            H[p].erase(find(H[p].begin(),H[p].end(),a));
            S.push(p);
        }
        else
        {
            if(S.size()>1) fout<<a<<" ";
            S.pop();
        }
    }
}