Cod sursa(job #1132996)

Utilizator Laakeriebin ebin Laakeri Data 4 martie 2014 11:15:55
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <vector>

using namespace std;

vector<int> g[100001];
vector<int> va[100001];

void lv(int x){
	cout <<x<<endl;
	for (int i=0;i<va[x].size();i++){
		if (va[x][i]!=x) lv(va[x][i]);
		else cout <<va[x][i]<<endl;
	}
}

int main(){
	int n,v;
	cin>>n>>v;
	for (int i=0;i<v;i++){
		int a,b;
		cin>>a>>b;
		g[a].push_back(b);
		g[b].push_back(a);
	}
	int fo=0;
	int al=1;
	while (fo<v){
		int cv=al;
		int f=1;
		while (f){
			f=0;
			if (!g[cv].empty()){
				f=1;
				int ocv=cv;
				cv=g[cv][g[cv].size()-1];
				g[ocv].erase(g[ocv].end()-1);
				for (int i=0;i<g[cv].size();i++){
					if (g[cv][i]==ocv){
						g[cv].erase(g[cv].begin()+i);
						break;
					}
				}
				va[al].push_back(cv);
				//cout <<al<<" "<<cv<<endl;
				fo++;
			}
		}
		if (fo<v){
			for (int i=0;i<va[al].size();i++){
				if (!g[va[al][i]].empty()){
					al=va[al][i];
					break;
				}
			}
		}
	}
	lv(1);
}