Cod sursa(job #1795419)

Utilizator NastureNasture Anca Nasture Data 2 noiembrie 2016 13:33:43
Problema Ciclu Eulerian Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
vector <int> lista[100001];
int k, st[500001];
int n,m;
void citire()
{
  int n1,n2;
  scanf("%d%d",&n,&m);
  for(int i=1;i<=m;i++)
  {
    scanf("%d%d",&n1,&n2);
    lista[n1].push_back(n2);
    lista[n2].push_back(n1);
  }
}
void euler(int nod)
{
  int fiu;
  while(lista[nod].size()!=0)
  {
    k++;
    st[k]=nod;
    fiu=lista[nod].back();
    lista[nod].pop_back();
    vector<int>::iterator it;
    it=find(lista[fiu].begin(),lista[fiu].end(),nod);
    lista[fiu].erase(it);

    nod=fiu;
  }
}

int main()
{
  int nod;

  freopen("ciclueuler.in","r",stdin);
  freopen("ciclueuler.out","w",stdout);
  citire();
  nod=1;
  int pp=1;
  while(k>0||pp==1)
  {
    pp=0;
  printf("%d ",nod);
    euler(nod);

    nod=st[k];
    k--;
  }
  return 0;
}