Cod sursa(job #752703)

Utilizator zeeboBuzatu Vlad zeebo Data 29 mai 2012 10:57:46
Problema Ciclu Eulerian Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <vector>
#include <deque>
#define pb push_back
#define pf push_front
using namespace std;
ifstream f("ciclueuler.in");
ofstream G("ciclueuler.out");
int x,y,next,nod,n,m,i,j;
vector<int> g[100000];
vector<int>::iterator it;
deque<int> Q;
int df ()
{
Q.pb(1);  
while (!Q.empty())
  {
	nod=Q.front();
        if (g[nod].empty())
        {
            G<<nod<<' ';
            Q.pop_front();
			continue;
        }
        next=g[nod].back();
        g[nod].pop_back();
        Q.pf(next);
        for (it=g[next].begin();it!=g[next].end();it++)
            if (*it==nod)
            {
			    g[next].erase(it);
                break;
            }
  }
return 0;
}
int main ()
{
	f>>n>>m;
	for (i=1;i<=m;i++)
	{
		f>>x>>y;
		g[x].pb(y);
		g[y].pb(x);
	}
	for (i=1;i<=n;i++)
	if (g[i].size()%2)
	{
		G<<"-1"<<'\n';
		return 0;
	}
df();
return 0;
}