Cod sursa(job #2278676)

Utilizator alextodoranTodoran Alexandru Raul alextodoran Data 8 noiembrie 2018 14:06:49
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,m,a,b,x[201][201],g[201],c[40002],c1[40002],i,o,k,kk;
void ciclu(int p, int *c, int &k)
{
    k=1;
    c[1]=p;
    do
    {
        i=1;
        while(!x[c[k]][i])i++;
        x[c[k]][i]=x[i][c[k]]=0;
        g[c[k]]--;
        g[i]--;
        k++;
        c[k]=i;
    }while(c[k]!=c[1]);
}
int main()
{
    ifstream fin ("euler.in");
    ofstream fout ("euler.out");
    fin>>n;
    while(fin>>a>>b)
    {
        x[a][b]=x[b][a]=1;
        g[a]++;
        g[b]++;
        m++;
    }
    ciclu(1,c,kk);
    while(kk+1<m)
    {
        i=1;
        while(!g[c[i]])i++;
        ciclu(c[i],c1,k);
        for(o=kk;o>i;o--)c[o+k-1]=c[o];
        for(o=1;o<k;o++)c[o+i]=c1[o+1];
        kk+=k-1;
    }
    fout<<kk<<"\n";
    for(o=1;o<=kk;o++)fout<<c[o]<<" ";
    fout<<"\n";
    return 0;
}