Pagini recente » Cod sursa (job #1543926) | Cod sursa (job #1056230) | Cod sursa (job #595706) | Cod sursa (job #278490) | Cod sursa (job #2535199)
#include<iostream>
#include<fstream>
#include<vector>
#include<stack>
#include<list>
using namespace std;
ifstream f("ciclueuler.in");
ofstream o("ciclueuler.out");
int vf, x, y;
list<int>*Adj;
void addEdge(int x, int y){
Adj[x].push_back(y);
Adj[y].push_back(x);
}
int main(){
f>>vf>>x;
Adj=new list<int>[vf];
while(f>>x){
f>>y;
addEdge(x-1, y-1);
}
int v=0, c;
list<int>::iterator i;
stack<int> s;
s.push(v);
vector<int>cicle;
int n=0;
while(!s.empty()){
v=s.top();
s.pop();
while(!Adj[v].empty()){
c=Adj[v].front();
Adj[v].remove(c);
for(i=Adj[c].begin();i!=Adj[c].end();i++){
if((*i)==v){
Adj[c].erase(i);
break;
}
}
s.push(c);
n++;
}
cicle.push_back(v+1);
}
if(n==0){
cout<<-1;
return 0;
}
cout<<1<<" ";
for(int i=n-1;i>=1;i--){
cout<<cicle[i]<<" ";
}
}