Cod sursa(job #1798999)

Utilizator lauratalaatlaura talaat lauratalaat Data 5 noiembrie 2016 17:30:35
Problema Ciclu Eulerian Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int n,m,k;
vector<int>v[100001];
vector<int>::iterator it;
int stiva[500001];
void citire(){
    int i,x,y;
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++){
        scanf("%d%d",&x,&y);
        v[x].push_back(y);
        v[y].push_back(x);
    }
}
void euler ( int nod ){
    int fiu;
    while(v[nod].size()!=0){
        fiu=v[nod].back();
        k++;
        stiva[k]=fiu;
        v[nod].pop_back();
        it=find(v[fiu].begin(),v[fiu].end(),nod);
        v[fiu].erase(it);
        nod=fiu;
    }
}
int main(){
    freopen("ciclueuler.in","r",stdin);
    freopen("ciclueuler.out","w",stdout);
    citire();
    stiva[1]=1;
    k=1;
    printf("%d ",stiva[k]);
    while(k!=0){
        euler(stiva[k]);
        k--;
        if(k>1)
            printf("%d ",stiva[k]);
    }
    return 0;
}