Cod sursa(job #1593563)

Utilizator Bot32King Max Bot32 Data 8 februarie 2016 18:22:40
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <vector>

#define nrmax 100001
#define pb push_back

using namespace std;

ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");

vector < int > G[nrmax];
int n , m , x , y , nod , j;
int grad[nrmax];

void sterge_muchie ( int a , int b )
{
    for ( int t = 0 ; t < G[b].size() ; t++ )
    {
        if ( G[b][t] == a )
        {
            G[b].erase(G[b].begin() + t );
            break;
        }
    }
}

void ciclu_eulerian( int i )
{
    g << i << " " ;
    while ( !G[i].empty() )
    {
        nod = G[i][0];
        G[i].erase(G[i].begin());
        sterge_muchie(i ,nod);
        ciclu_eulerian(nod);
    }
}

int main()
{
    f >> n >> m ;
    for ( ; m-- ; )
    {
        f >> x >> y;
        G[x].pb(y);
        G[y].pb(x);
        grad[x]++;
        grad[y]++;
    }
    for ( int i = 1; i <= n; i++ )
    {
        if ( grad[x] == 0 or grad[x]%2 == 1 )
        {
            g << -1 ;
            return 0;
        }
    }
    ciclu_eulerian(1);
    return 0;
}