Cod sursa(job #896309)

Utilizator dspMihaiDespotovici Mihai dspMihai Data 27 februarie 2013 15:01:32
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;

vector <long> A[100001],ok;
long N,M,i,j,k;


void dfs (int crt)
{
	int i,k=A[crt].size();
	for (i=0; i<k; i++)
		if (!ok[A[crt][i]])
		{
			ok[A[crt][i]]=1;
			dfs(A[crt][i]);
		}
}
bool conex ()
{
	dfs(1);
	long i=1;
	for (i=1; i<=N; i++)
		if (!ok[i] && !A[i].size()) return 0;
	return 1;
}

bool gradepare()
{
	long i;
	for (i=1; i<=N; i++)
	{
		if (A[i].size()%2) return 0;
	}
	return 1;
}
int main ()
{
	FILE *f,*g;
	f=fopen("ciclueuler.in", "r");
	g=fopen("ciclueuler.out", "w");
	fscanf(f, "%d %d", &N,&M);
	for (i=1; i<=N; i++) ok.push_back(0);
	for (i=1; i<=M; i++)
	{
		fscanf(f, "%d %d", &j,&k);
		A[j].push_back(k);
		A[k].push_back(j);
	}
	if (conex() && gradepare())
	{
	}
	else fprintf(g, "-1\n");
	
	//for (i=1; i<=N; i++, cout<<"\n")
	//	for (j=0; j<A[i].size(); j++)
	//		cout<<A[i][j]<<" ";
	fclose(f); fclose(g);
	return 0;
}