Cod sursa(job #1802878)

Utilizator adystar00Bunea Andrei adystar00 Data 10 noiembrie 2016 18:52:25
Problema Ciclu Eulerian Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
struct prb { int nod,mu;};
vector <int> g[100010];
int n,k,st[500010];
void citire (){
    int m,i,a,b;
    prb val;
    fin>>n>>m;
    for(i=1;i<=m;i++){
        fin>>a>>b;
        //val.nod=b;
        //val.mu=i;
        g[a].push_back(b);
        //val.nod=a;
        g[b].push_back(a);
    }
}
void parcurgere(int x)
{
    int i,pp,a=g[x].size(),fiu;
    pp=0;
    while(a!=0)
    {
        fiu=g[x].back();
        k++;
        st[k]=fiu;
        g[x].pop_back();
        vector <int>::iterator it=find(g[fiu].begin(),g[fiu].end(),x);
        g[fiu].erase(it);
        x=fiu;
        a=g[x].size();
    }
}
int main()
{
    int i,j,nd;
    citire();
    st[1]=1;
    k=1;
    while(k!=0){
        nd=st[k];
        parcurgere(nd);
        if(k>1)
        fout<<st[k]<<" ";
        k--;
    }
    return 0;
}