Pagini recente » Cod sursa (job #736613) | Cod sursa (job #418971) | Cod sursa (job #2336246) | Cod sursa (job #2957047) | Cod sursa (job #2492779)
#include <iostream>
#include <fstream>
#include <vector>
struct muchie{
int x,y;
int valid;
muchie(int x_,int y_){
x=x_;
y=y_;
valid=1;
}
};
const int NMAX=100001;
std::ifstream in("ciclueuler.in");
std::ofstream out("ciclueuler.out");
std::vector<muchie>muchii;
std::vector<int>v[NMAX];
std::vector<int>sol;
int nr[NMAX];
void dfs(int nod){
while(nr[nod]){
for(int i=0;i<v[nod].size();i++){
int m=v[nod][i];
if(muchii[m].valid){
muchii[m].valid=0;
nr[nod]--;
if(nod==muchii[m].x)
nr[muchii[m].y]--,dfs(muchii[m].y);
else
nr[muchii[m].x]--,dfs(muchii[m].x);
}
}
}
sol.push_back(nod);
}
int main(){
int n,m;
in>>n>>m;
for(int i=0,x,y;i<m;i++){
in>>x>>y;
muchii.push_back(muchie(x,y));
v[x].push_back(muchii.size()-1);
v[y].push_back(muchii.size()-1);
nr[x]++;
nr[y]++;
}
dfs(1);
sol.pop_back();
for(int x:sol)
out<<x<<" ";
return 0;
}