Cod sursa(job #937957)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 11 aprilie 2013 14:27:08
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");

#include <vector>
#define LE 100666
#define x first
#define y second
#define mp make_pair
#define pb push_back
bool viz[LE];
vector<pair<int,int> > H[LE];
int i;
int result[LE*4],k,n,m,xx,yy;
bool okz;

void dfs(int nod)
{
    int N=H[nod].size();

    for(int i=0;i<N;++i)
      if (viz[H[nod][i].y]==false)
       {
           viz[H[nod][i].y]=true;
           int dest=H[nod][i].x;
           dfs(dest);
       }
    result[++k]=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));
    }

    dfs(1);

    for(i=1;i<=m;++i)
      if (viz[i]==false)
      {
          g<<-1;
          okz=true;
          break;
      }


    for(i=1;okz==false&&i<=m;++i)
    g<<result[i]<<" ";

    g<<'\n';



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