Cod sursa(job #595811)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 14 iunie 2011 13:57:03
Problema Ciclu Eulerian Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int N=100001;

int n,m,q,v[600001];

struct punct{
	int b,poz;
	bool viz;
};

vector <punct> a[N];


void euler(int x){
	int i,y;
	for(i=0;i<a[x].size();i++){
		if(a[x][i].viz){
			continue;
		}
		y=a[x][i].b;
		a[x][i].viz=true;
		a[y][a[x][i].poz].viz=true;
		euler(y);
	}
	v[++q]=x;
}

int main(){
	punct aux;
	int i,x,y;
	in>>n>>m;
	for(i=1;i<=m;i++){
		in>>x>>y;
		if(x==y){
			aux.b=y;
			aux.viz=false;
			aux.poz=a[y].size();
			a[x].push_back(aux);
		}
		else{
			aux.b=y;
			aux.viz=false;
			aux.poz=a[y].size();
			a[x].push_back(aux);
			aux.b=x;
			aux.poz=a[x].size()-1;
			a[y].push_back(aux);
		}
	}
	euler(1);
	for(i=1;i<=q;i++){
		out<<v[i]<<" ";
	}
	return 0;
}