Cod sursa(job #472582)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 25 iulie 2010 17:48:11
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#include <list>
#include <vector>
#define N 100001
using namespace std;
struct muc
{int m;
 int i;
 bool b;
};

typedef list<int>::iterator LIT;
typedef vector<muc>::iterator IT;
vector<muc> vec[N];
list<int> lista;

void euler(int k,LIT lit)
{lista.insert(lit,k);
 LIT temp;
 for (IT it=vec[k].begin(); it!=vec[k].end();it++)
 {if(it->b==true)
  {it->b=false;
   vec[it->m][it->i].b=false;
   temp=lit;temp++;
   euler(it->m,temp);
  }
 }
}
int main ()
{freopen("ciclueuler.in","r",stdin);
 freopen("ciclueuler.out","w",stdout);
 int n,m,x,y,i,s1,s2;
 scanf("%d %d",&n,&m);
 for (i=1;i<=m;i++)
 {scanf("%d %d",&x,&y);
  s1=vec[x].size();
  s2=vec[y].size();
  vec[x].push_back((muc){y,s2,false});
  vec[y].push_back((muc){x,s1,false});
 }
 euler(1,lista.begin());
 
 for (LIT lit=lista.begin();lit!=lista.end();lit++)
 {printf("%d",*lit);
 }
 return 0;
}