Pagini recente » Cod sursa (job #93956) | Cod sursa (job #3298914) | Cod sursa (job #3243709) | Cod sursa (job #3282940) | Cod sursa (job #3298445)
#include <iostream>
#include <fstream>
#include <set>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
const int MAX=1e5;
int n,m,i,nod1,nod2,degree[MAX+5],nr;
set <int> s[MAX+5];
bool sol=1,viz[MAX+5];
queue <int> q;
int main()
{
fin>>n>>m;
while (m)
{
fin>>nod1>>nod2;
degree[nod1]++;
degree[nod2]++;
s[nod1].insert(nod2);
s[nod2].insert(nod1);
m--;
}
for (i=1; i<=n; i++)
if (degree[i]%2==1)
sol=0;
viz[1]=1;
q.push(1);
nr=1;
while (!q.empty())
{
nod1=q.front();
q.pop();
for (auto x: s[nod1])
if (!viz[x])
{
viz[x]=1;
nr++;
q.push(x);
}
}
if (nr!=n)
sol=0;
if (sol==0)
fout<<-1;
return 0;
}