Cod sursa(job #1219562)

Utilizator pavlov.ionPavlov Ion pavlov.ion Data 14 august 2014 16:16:43
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<list>
#include<algorithm>
#include<vector>
#define MAXN 100005
#define pb push_back
using namespace std;
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
int N,M,deg[MAXN];
list <int> G[MAXN];
list <int>::iterator it;
vector <int> ciclu;
void read() {
	int x,y,i;
	cin>>N>>M;
	for(i=1;i<=M;i++) {
				   cin>>x>>y;
				   G[x].pb(y); deg[x]++;
				   G[y].pb(x); deg[y]++; }
}
void euler(int v) {
	int i,w;
	while(G[v].size()>0) {
			w=*G[v].begin();
			deg[v]--; deg[w]--;
			G[v].erase(G[v].begin());
			for(it=G[w].begin();it!=G[w].end();it++)
			         if(*it==v) {
					 			G[w].erase(it);
					 			break; }
			euler(w);    }
	ciclu.pb(v);
}
int main()  {
	int i;
 read();
 euler(1);
 for(i=0;i<ciclu.size();i++)
            cout<<ciclu[i]<<" ";
return 0;
}