Pagini recente » Cod sursa (job #1622337) | Cod sursa (job #1919019) | Cod sursa (job #2910942) | Cod sursa (job #337332) | Cod sursa (job #1661438)
#include <fstream>
#include <vector>
#include <algorithm>
#include <stack>
using namespace std;
#define MAX 100005
vector<int> V[MAX],ans;
stack<int> q;
void euler(int node);
fstream f("ciclueuler.in",ios::in);
ofstream g("ciclueuler.out");
int main()
{
int N,M,i,x,y;
f>>N>>M;
for(i=0;i<M;++i)
{
f>>x>>y;
V[x].push_back(y), V[y].push_back(x);
}
for(i=1;i<=N;++i)
if(V[i].size()%2!=0)
{
g<<-1;
return 0;
}
euler(1);
for(i=0;i<ans.size()-1;++i)g<<ans[i]<<" ";
return 0;
}
void euler(int node)
{
q.push(node);
while (!q.empty())
{
int i = q.top();
if (V[i].size() > 0)
{
int next = V[i].back();
V[i].pop_back();
q.push(next);
V[next].erase(find(V[next].begin(), V[next].end(), i));
}
else
{
q.pop();
ans.push_back(i);
}
}
}