Cod sursa(job #896234)

Utilizator dspMihaiDespotovici Mihai dspMihai Data 27 februarie 2013 14:32:03
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 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,ok0=1;
	while (ok0 && i<=N)
		if (ok[i]) i++;
	else ok0=0;
	return ok0;
}

bool gradepare()
{
	long i,ok0=1;
	for (i=1; i<=N && ok0; i++)
		if (A[i].size()%2) ok0=0;
	return ok0;
}
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");
	fclose(f); fclose(g);
	return 0;
}