Cod sursa(job #1932169)

Utilizator RaTonAndrei Raton RaTon Data 19 martie 2017 15:54:35
Problema Ciclu Eulerian Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <int> A[100001];
bool viz[500001];
int n, m;
struct MUCHIE{
    int x, y;
}M[500001];



int main()
{
    int i, j, x, y, nod, e;
    f >> n >> m;
    for( i = 1; i <= m; i++ ){
        f >> x >> y;
        A[x].push_back(i);
        A[y].push_back(i);
        M[i].x = x;
        M[i].y = y;
    }
    for(i = 1; i <= n; i++)
    if(A[i].size()%2 == 1){
        g << "-1";
        return 0;
    }
    vector <int> stk;
    vector <int> ans;
    stk.push_back(1);
    while(!stk.empty()){
        nod = stk.back();
        if(!A[nod].empty()){
            e = A[nod].back();
            A[nod].pop_back();
            if(!viz[e]){
                viz[e] = true;
                stk.push_back(M[e].x^M[e].y^nod);
            }
        }
        else{
            ans.push_back(nod);
            stk.pop_back();
        }
    }
    for(i = 0; i < ans.size() - 1; i++)
        g << ans[i] << " ";
    return 0;
}