Cod sursa(job #760603)

Utilizator Theorytheo .c Theory Data 22 iunie 2012 12:52:49
Problema Ciclu Eulerian Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<stdio.h>
#include<fstream>
#include<vector>
#define nmax 100007
#define mmax 500006
using namespace std;

ifstream fin("ciclueuler.in");
FILE *fout = fopen("ciclueuler.out","w");
vector<int> v[nmax];
int N, x[mmax], y[mmax], M;
bool viz[mmax];

inline void euler(int nod)
{
    for(vector<int>::iterator it = v[nod].begin(); it != v[nod].end(); ++it)
    {
        if(!viz[*it])
        {
            viz[*it] = true;
            euler(x[*it] + y[*it] - nod);
            fprintf(fout,"%d ", nod);
            //fout <<nod <<" ";
        }
    }

}
void read()
{
    fin>>N>>M;
    for(int i =1; i <= M ; i++)
    {
       fin>>x[i] >>y[i];
        v[x[i]].push_back(i);
        v[y[i]].push_back(i);

    }
    for(int i = 1; i <= N; i++)

        if(v[i].size()%2)
        {
            fprintf(fout, "-1");
            return;
        }
    euler(1);
}
int main()
{
    read();
    fin.close();

    return 0;

}