Pagini recente » Cod sursa (job #7198) | Cod sursa (job #2113035) | Cod sursa (job #3197492) | Cod sursa (job #146399) | Cod sursa (job #2679013)
#include <bits/stdc++.h>
#define MAX 100005
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector < int > g[MAX];
vector < pair < int , int > > l;
bitset < MAX > c;
vector < int > sol;
stack < int > st;
int n, m, x, y;
int main(){
in>>n>>m;
while(m--){
in>>x>>y;
l.push_back({x, y});
g[x].push_back(l.size() - 1);
g[y].push_back(l.size() - 1);
}
st.push(1);
while(!st.empty()){
int k = st.top();
if(!g[k].empty()){
int nivel = g[k].back();
g[k].pop_back();
if(!c[nivel]){
c[nivel] = true;
int vec = l[nivel].second;
if(vec != k)
st.push(vec);
else
st.push(l[nivel].first);
}
}
else{
st.pop();
sol.push_back(k);
}
}
for(int i = 0; i < sol.size() - 1; i++)
out<<sol.at(i)<<" ";
}