Pagini recente » Cod sursa (job #2161283) | Cod sursa (job #2709765) | Cod sursa (job #3042333) | Cod sursa (job #1573234) | Cod sursa (job #896234)
Cod sursa(job #896234)
#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;
}