Cod sursa(job #2696709)

Utilizator CleliaClelia Maria Dobrescu Clelia Data 16 ianuarie 2021 13:40:37
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 fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
int a[500003],b[500003],ok[500003],nr[100003],okt;
vector <int> v[100003];
void euler (int poz)
{
    int i,m,nn;
    while (v[poz].size())
    {
        i=v[poz].size()-1;
        m=v[poz][i];
        v[poz].pop_back();
        if (ok[m])
            continue;
        ok[m]=1;
        nn=(poz^a[m]^b[m]);
        euler(nn);
    }
    if (okt)
        fout<<poz<<" ";
    okt=1;
}
int main ()
{
    long long pp=1,n,m,i;
    fin>>n>>m;
    for (i=1;i<=m;i++)
    {
        fin>>a[i]>>b[i];
        v[a[i]].push_back(i);
        v[b[i]].push_back(i);
        nr[a[i]]++;
        nr[b[i]]++;
    }
    for (i=1;i<=n && pp==1;i++)
        if (nr[i]%2==1)
        {
            fout<<"-1";
            pp=0;
        }
    if (pp==1)
        euler(1);
    return 0;
}