Pagini recente » Cod sursa (job #1773369) | Cod sursa (job #1557914) | Cod sursa (job #660529) | Cod sursa (job #1998481) | Cod sursa (job #1621176)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int NMAX = 100001;
int n,m;
vector<int> muchii[NMAX];
int grade[NMAX];
queue<int> coada;
bitset<NMAX> mark;
void citire()
{
in>>n>>m;
int x,y;
for(int i=1;i<=m;i++)
{
in>>x>>y;
grade[x]++;
grade[y]++;
muchii[x].push_back(y);
muchii[y].push_back(x);
}
in.close();
}
int bfs()
{
coada.push(1);
int x;
int nr = 1;
mark.set(1);
while(!coada.empty())
{
x = coada.front();
for(unsigned int i = 0;i < muchii[x].size();i++)
if(!mark.test(muchii[x][i]))
{
coada.push(muchii[x][i]);
nr++;
mark.set(muchii[x][i]);
}
coada.pop();
}
return nr;
}
int ok()
{
int check= 1;
for(int i=1;i<=n;i++)
if(grade[i]%2==1)
{
check = 0;
break;
}
if((check) && (bfs()==n))
return 1;
return 0;
}
int main()
{
citire();
if(!ok())
out<<-1;
else
{
}
return 0;
}