Pagini recente » Cod sursa (job #2509845) | album2 | Cod sursa (job #3154032) | Cod sursa (job #163874) | Cod sursa (job #2820918)
#include<bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector<pair<int,bool>> adjList[100001];
stack<int> st;
vector<int> euler;
vector<int> visited; //pentru muchii
int n,m;
vector<int> Eulerian(int x){
int i;
for(i=0;i<n;++i){
if(adjList[i].size()%2==1){
return {-1};
}
}
st.push(0);
while(!st.empty()){
int node=st.top();
if(adjList[node].size()!=0){
int next=adjList[node].back().first;
int j=adjList[node].back().second;
adjList[node].pop_back();
if(visited[j]==0){
visited[j]=1;
st.push(next);
}
}
else
{
euler.push_back(node);
st.pop();
}
}
return euler;
}
int main(){
int a,b;
f>>n>>m;
int i;
visited.assign(m+1,0);
for(i=0;i<m;++i){
f>>a>>b;
adjList[a-1].push_back(make_pair(b-1,i));
adjList[b-1].push_back(make_pair(a-1,i));
}
int ok=1;
/*for(i=0;i<n;++i){
for(int j=0;j<adjList[i].size();++j){
cout<<adjList[i][j].first+1<<' '<<adjList[i][j].second<<'\n';
}
cout<<'\n';
}*/
euler=Eulerian(0);
if(euler[0]==-1)
g<<-1;
for(i=0;i<euler.size();++i){
g<<euler[i]+1<<' ';
}
return 0;
}