Cod sursa(job #949111)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 12 mai 2013 15:47:57
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>
using namespace std;
#define LE 100666
#define pb push_back
#define x first
#define y second
#define mp make_pair

ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector<pair<int,int> > H[LE];
bool fr[LE];
int xx,yy,i,K,A[LE];
int n,m;

void euler(int nod)
{
    int N=H[nod].size();
    bool OKZ=false;

    for(int i=0; i<N; ++i)
        if (fr[H[nod][i].y]==false)
        {
            fr[H[nod][i].y]=true;
            OKZ=true;
            euler(H[nod][i].x);
            break;
        }

    if (OKZ==false)
        A[++K]=nod;
    else euler(nod);
}
int main()
{
    f>>n>>m;
    for(i=1; i<=m; ++i)
    {
        f>>xx>>yy;
        H[xx].pb(mp(yy,i));
        H[yy].pb(mp(xx,i));
    }

    euler(1);

    for(i=1;i<K;++i)
      g<<A[i]<<" ";

    f.close();
    g.close();
    return 0;
}