Pagini recente » Cod sursa (job #2453409) | Cod sursa (job #1883369) | Cod sursa (job #333692) | Cod sursa (job #3226679) | Cod sursa (job #2820875)
#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;
int visited[100001]; //pentru muchii
int main(){
int n,m,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){
if(adjList[i].size()%2==1){
ok=0;
break;
}
}
if(ok==0){
g<<-1;
}
else{
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();
}
}
}
for(i=0;i<euler.size();++i){
g<<euler[i]+1<<' ';
}
return 0;
}