Cod sursa(job #1424403)

Utilizator roberta9533Pavel Roberta roberta9533 Data 24 aprilie 2015 11:16:19
Problema Ciclu Eulerian Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <int> G[100001];
int a[500001],k=0;
void euler(int v)
{
    for(int i=0;i<G[v].size();i++)
    {
        int u;
        u=G[v].back();
        G[v].pop_back();
        for(int j=0;j<G[u].size();j++)
            if(G[u][j]==v)
            {
                G[u][j]=G[u].back();
                G[u].pop_back();
            }
        euler(u);
    }
    a[++k]=v;
}

int main()
{
    int n,m,ok=1;
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        f>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
    for(int i=1;i<=n;i++)
        if(G[i].size()%2!=0)
            ok=0;
    if(ok==0) g<<-1;
    else
    {
        euler(1);
        for(int q=1;q<k;q++)
            g<<a[q]<<" ";
    }

    return 0;
}