Cod sursa(job #3198538)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 29 ianuarie 2024 19:08:58
Problema Ciclu Eulerian Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("ciclueuler.in");
ofstream G("ciclueuler.out");
int n,m,i,j,k,l=1;
vector<int> g[100001],h;
void A(int i)
{
    int j,k=g[i].size(),l,t,r;
    for(j=0;j<k;++j)
        if(g[i][j]) {
            for(r=g[i][j],t=g[r].size(),g[i][j]=0,l=0;l<t&&g[r][l]!=i;++l);
            if(g[r][l]==i)
                g[r][l]=0,A(r);
        }
    h.push_back(i);
}
int main()
{
    for(F>>n>>m;m--;F>>i>>j,g[i].push_back(j),g[j].push_back(i));
    for(i=1;i<=n;++i)
        if(g[i].size()&1)
            ++k,l=i;
    if(k>2||k==1)
        return G<<-1,0;
    for(A(l),k=h.size()-1,i=0;i<k;G<<h[i++]<<' ');
    return 0;
}