Pagini recente » Cod sursa (job #1380353) | Cod sursa (job #1508418) | Cod sursa (job #2975643) | Cod sursa (job #2882521) | Cod sursa (job #656868)
Cod sursa(job #656868)
#include<fstream>
#include<vector>
#include<stack>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
#define pb push_back
int N,M;
vector<int> G[ 100001 ], sol;
stack<int> S;
int main()
{
int i,x,y;
in >> N >> M;
for(i = 1; i <= M; i++)
{
in >> x >> y;
G[x].pb(y);
G[y].pb(x);
}
for(i = 1; i <= N; i++)
if(G[i].size() & 1)
out << " -1";
for(S.push(1); !S.empty(); )
{
int x = S.top();
if(G[x].size() == 0)
{
sol.pb(x); S.pop();
continue;
}
int y = G[x].back();
G[x].pop_back();
S.push(y);
for(vector <int> :: iterator it = G[y].begin(); it != G[y].end(); ++it )
if(*it == x)
{
G[y].erase( it );
break;
}
}
for(vector <int> :: iterator it = sol.begin(); it != sol.end()-1; ++it)
out << (*it) << " ";
}