Pagini recente » Cod sursa (job #1252209) | Cod sursa (job #1835671) | Cod sursa (job #2188700) | Cod sursa (job #549486) | Cod sursa (job #3250646)
#include <fstream>
#include<vector>
#include<utility>
#include<stack>
using namespace std;
vector<pair<int, int>>lista[100001];
bool ok[500001];
stack<int>st;
void euler (int nod)
{
int fiu;
while (lista[nod].size())
{
st.push(nod);
fiu=lista[nod].back();
lista[nod].pop_back();
vector<int>iterator :: t;
t=find(lista[fiu].begin(), lista[fiu].end(), nod);
lista[fiu].erase(t);
nod=fiu;
}
}
int main()
{
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
int n, m, i, x, y, ok=0;
cin>>n>>m;
for (i=1;i<=m;i++)
{
cin>>x>>y;
lista[x].push_back(make_pair(y, i));
lista[y].push_back(make_pair(x, i));
}
for (i=1;i<=n;i++)
{
if (lista[i].size()%2==1)
{
i=n+1;
ok=-1;
}
}
if (ok==-1)
{
cout<<"-1";
}
else
{
int nod=1;
int ok=1;
while (!st.empty() && ok==1)
{
ok=0;
cout<<nod<<" ";
euler(nod);
nod=st.top();
st.pop();
}
}
return 0;
}