Cod sursa(job #765745)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 9 iulie 2012 10:13:52
Problema Ciclu Eulerian Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<bitset>
using namespace std;
struct nod {
	int y,m;
	inline nod(int _y, int _m) {
		y=_y;
		m=_m;
	}
};
vector <nod> v[100001];
int gr[100001];
bitset <500001> d;
ofstream g("ciclueuler.out");
inline void dfs(int x)
{
	for(vector <nod> :: iterator it=v[x].begin();it!=v[x].end();it++) 
		if(d[it->m]==0) {
			d[it->m]=1;
			dfs(it->y);
			g<<x<<" ";
		}
}
int main ()
{
	int n,m,i,x,y,c;
	ifstream f("ciclueuler.in");
	f>>n>>m;
	for(i=1;i<=m;i++) {
		f>>x>>y;
		v[x].push_back(nod(y,i));
		v[y].push_back(nod(x,i));
		gr[x]++;
		gr[y]++;
	}
	f.close();
	c=1;
	for(i=1;i<=n;i++)
		if(gr[i]%2==1) {
			c=0;
			break;
		}
	if(c==0) 
		g<<"-1";
	else dfs(1);
	g.close();
	return 0;
}