Pagini recente » Rating Marinescu Andrei (Andrei_Marinescu) | Cod sursa (job #577448) | Cod sursa (job #1623116) | Cod sursa (job #698027) | Cod sursa (job #2575434)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 100005;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m;
vector<pair<int, bool>> graf[NMAX];
vector<int> raspuns;
void dfs(int node)
{
for(int i = 0;i<graf[node].size();i++)
{
if(graf[node][i].second){
graf[node][i].second=false;
for(int j = 0;j< graf[graf[node][i].first].size();j++)
{
if(graf[graf[node][i].first][j].first==node && graf[graf[node][i].first][j].second){
graf[graf[node][i].first][j].second = false;
break;
}
}
dfs(graf[node][i].first);
}
}
raspuns.push_back(node);
fout<<node<<' ';
}
int main()
{
fin>>n>>m;
while(m--)
{
int a, b;
fin>>a>>b;
graf[a].push_back({b,true});
graf[b].push_back({a,true});
}
for(int i = 1;i<=n;i++){
if(graf[i].size()%2)
{
fout<<-1;
return 0;
}
}
dfs(1);
for(int i = 0;i<raspuns.size()-1;i++)
fout<<raspuns[i]<<" ";
return 0;
}