Cod sursa(job #908397)

Utilizator OpportunityVlad Negura Opportunity Data 9 martie 2013 13:07:52
Problema Ciclu Eulerian Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream fi("ciclueuler.in");
ofstream fo("ciclueuler.out");

vector< int > G[100001],Q;
long n,m,i,j,a,b,nod,nod2;

vector< int > :: iterator it;

int main(){
	
	fi >> n >> m;
	for (i=1; i<=m; i++){
		fi >> a >> b;
		G[a].push_back(b);
		G[b].push_back(a);
	}
	for (i=1; i<=n; i++)
		if (G[i].size() & 1) { fo << "-1"; return 0;}
	
	Q.push_back(1);
	while (!Q.empty()){
		nod=Q.back();
		if (G[nod].empty()){
			Q.pop_back();
			fo << nod << " ";
		}else{
			nod2=G[nod].back();
			G[nod].pop_back();
			Q.push_back(nod2);
			for (it=G[nod2].begin(); it!=G[nod2].end(); it++)
				if (*it==nod){G[nod2].erase(it); break;}
		}	
	}
	
	return 0;
}