Pagini recente » Cod sursa (job #2158913) | Cod sursa (job #2293787) | Cod sursa (job #2915039) | Cod sursa (job #1698522) | Cod sursa (job #2575686)
#include<bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int num_nodes,num_edges;
struct edge{
int destination,index;
};
vector<edge> graph[100000];
bool used[500000];
vector<int> result;
void read(){
in>>num_nodes>>num_edges;
int a,b;
for(int i=0;i<num_edges;i++){
in>>a>>b;
graph[a-1].push_back({b-1,i});
graph[b-1].push_back({a-1,i});
}
}
void euler(int node){
for(int i=0;i<graph[node].size();i++){
edge p=graph[node][i];
if(!used[p.index]){
used[p.index]=true;
euler(p.destination);
}
}
result.push_back(node);
}
int main(){
read();
euler(0);
if(result[0]==result[result.size()-1])
for(int i=0;i<result.size();i++)
out<<result[i]+1<<" ";
else
out<<-1;
}