Pagini recente » Cod sursa (job #3213113) | Cod sursa (job #2265816) | Cod sursa (job #1109486) | Cod sursa (job #1436928)
#include <fstream>
#include <vector>
#include <stack>
#define nmax 500100
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int N, M;
bool folosit[nmax];
vector <pair <int, int> > muchi;
vector <int> graf[nmax], Sol;
void euler(int nod){
int i;
for(i = 0; i < graf[nod].size(); ++i){
if(! folosit[ graf[nod][i] ]){
int nod2 = muchi[ graf[nod][i] ].first + muchi[ graf[nod][i] ].second - nod;
folosit[ graf[nod][i] ] = true;
euler(nod2);
}
}
Sol.push_back(nod);
}
int main()
{int a, b;
f>>N>>M;
muchi.push_back( make_pair(0, 0) );
for(int i = 1; i <= M; ++i){
f>>a>>b;
muchi.push_back( make_pair(a, b) );
graf[a].push_back(i);
if(a != b)
graf[b].push_back(i);
}
/*for(int i = 1; i <= N; ++i){
for(int j = 0; j < graf[i].size(); ++j){
g<<muchi[ graf[i][j] ].first<<' '<<muchi[ graf[i][j] ].second<<' ';
}
g<<'\n';
}*/
euler(1);
for(int i = Sol.size() - 1; i > 0; --i)
g << Sol[i] <<' ';
g<<'\n';
return 0;
}