Cod sursa(job #2442298)

Utilizator vladth11Vlad Haivas vladth11 Data 23 iulie 2019 16:50:22
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
vector <int> v[100001];
bool viz[500001];
int sum[500001];
int stiva[100001],vf;
void ciclu(int nod){
    while(!v[nod].empty()){
        int muchie = v[nod].back();
        v[nod].pop_back();
        if(viz[muchie] == 0){
            viz[muchie] = 1;
            ciclu(sum[muchie] - nod);
        }
    }
    stiva[++vf] = nod;
}
int main()
{
    int x,y,i,n,m;
    cin >> n >> m;
    for(i = 1;i <= m;i++){
        cin >> x >> y;
        sum[i] = x + y;
        v[x].push_back(i);
        v[y].push_back(i);
    }
    for(i = 1;i <= n;i++){
        int grad = v[i].size();
        if(grad % 2 == 1)
        {
            cout << -1;
            return 0;
        }
    }
    ciclu(1);
    for(i = 1;i < vf;i++)
        cout << stiva[i] << " ";
    return 0;
}