Pagini recente » Cod sursa (job #1306719) | Cod sursa (job #2332054) | Cod sursa (job #1857947) | Cod sursa (job #3268068) | Cod sursa (job #481638)
Cod sursa(job #481638)
#include <fstream>
#include <vector>
#define MAXN 100010
#define MAXM 500010
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector<int> g[MAXN], result;
int n,m,i,a,b;
void euler(int nod)
{
int w;
while(g[nod].size())
{
do
{
w = g[nod].back();
g[nod].pop_back();
}
while(w == -1 && g[nod].size());
if(!g[nod].size() && w == -1)
{
result.push_back(nod);
return;
}
for(vector<int>::iterator it=g[w].begin(); it!=g[w].end(); ++it)
if(*it == nod)
{
*it = -1;
break;
}
euler(w);
}
result.push_back(nod);
}
int main()
{
in>>n>>m;
for(i=1; i<=m; i++)
{
in>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
euler(1);
for(i=0; i<result.size()-1; ++i)
{
out<<result[i]<<' ';
}
return 0;
}