Cod sursa(job #1177176)

Utilizator andreiulianAndrei andreiulian Data 26 aprilie 2014 11:54:32
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
int n,m,sol[500005],u;
vector<int> v[100001];
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
void euler(int i);
int main()
{
    in>>n>>m;
    int i,a,b;
    for(i=1;i<=n;i++) v[i].push_back(0);
    for(i=1;i<=m;i++)
    {
        in>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
        v[a][0]++;
        v[b][0]++;
    }
    euler(1);
    for(i=1;i<=u;i++) out<<sol[i]<<' ';
    out<<'\n';
}
void euler(int i)
{
    int k=1,x,j;
    while(v[i][0])
    {
        while(v[i][k]==-1) k++;
        x=v[i][k];
        v[i][k]=-1;
        for(j=1;j<v[x].size();j++)
        if(v[x][j]==i) {v[x][j]=-1; v[x][0]--; break;}
        v[i][0]--;
        euler(x);
    }
    sol[++u]=i;
}