Cod sursa(job #2207256)

Utilizator EricEric Vilcu Eric Data 25 mai 2018 12:42:03
Problema Ciclu Eulerian Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int n,m,x,y,k,gr[100001],sir[500002];
int sfru[100001];
struct muchie{int b;muchie *n;}*a[100001],*p;
bool K;
void delet(int x,int y)
{
    muchie *p=a[x];
    if(p->b!=y)
    {
        for(;p->n->b!=y;p=p->n);
        p->n=p->n->n;
        p=p->n;
    }
    else
    {
        a[x]=p->n;
    }
}
void euler(int x)
{
    while(a[x]!=NULL){
        int k=a[x]->b;
        delet(k,x);
        delet(x,k);
        euler(k);
    }
    sir[k]=x;++k;
}
int main()
{
    f>>n>>m;
    for(int i=1;i<=n;++i)a[i]=NULL;
    while(f>>x>>y)
    {
        p=new muchie;
        p->b=x;
        p->n=a[y];
        a[y]=p;
        p=new muchie;
        p->b=y;
        p->n=a[x];
        a[x]=p;
        ++gr[x];++gr[y];
    }
    for(int i=1;i<=n;++i)if(gr[i]%2==1){g<<-1;return 0;}
    for(int i=1;1;++i)if(gr[i]!=0){k=1;sir[1]=i;euler(i);break;}
    for(int i=1;i<=m;++i){g<<sir[i]<<' ';}
}