Cod sursa(job #2696704)

Utilizator aeliusdincaaelius dinca aeliusdinca Data 16 ianuarie 2021 13:37:52
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector <int>v[100002],ans;
int viz[500002];
int a[500003],b[500003];
int gr[100002],ok;
void euler(int poz)
{
    while (v[poz].size()!=0)
    {
        int muc=v[poz].back();
        v[poz].pop_back();
        if(viz[muc])
            continue;
        viz[muc]=1;
        int vecin;
        if(a[muc]==poz)
            vecin=b[muc];
        else
            vecin=a[muc];
            euler(vecin);
    }
    if(ok)
        out<<poz<<" ";
    ok=1;
}
int main()
{
    int n,m,i;
    in>>n>>m;
    for(i=1;i<=m;i++)
    {
        in>>a[i]>>b[i];
        v[a[i]].push_back(i);
        v[b[i]].push_back(i);
        gr[a[i]]++;
        gr[b[i]]++;
    }
    for(i=1;i<=n;i++)
        if(gr[i]%2!=0)
        {
            out<<"-1";
            return 0;
        }
    euler(1);
    return 0;
}