Pagini recente » Cod sursa (job #3348895) | Cod sursa (job #3002811) | Atasamentele paginii Profil CodeJunkies | Borderou de evaluare (job #1530415) | Cod sursa (job #3333461)
#include <fstream>
#include<vector>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<vector<pair<int,int>>> graph;
vector<bool> indice;
vector<int> grade;
vector<int> ciclu;
int n, m;
void euler(int node)
{
for( auto w : graph[node])
{
if(!indice[w.second])
{ indice[w.second] = 1;
euler(w.first);
}
}
ciclu.push_back(node);
}
void afisare()
{
for(int i = 0; i < ciclu.size() - 1; i++)
{
fout << ciclu[i] << " ";
}
}
int main()
{
fin >> n >> m;
graph.resize(n+1);
indice.resize(m+1, 0);
grade.resize(n+1, 0);
while(m)
{
int x, y;
fin >> x >> y;
grade[x]++;
grade[y]++;
graph[x].push_back({y, m});
graph[y].push_back({x, m});
m--;
}
for(int i = 0; i < grade.size(); i++)
if(grade[i]%2)
return 0;
euler(1);
if(ciclu.size() >= m)
afisare();
return 0;
}