Pagini recente » Cod sursa (job #645116) | Cod sursa (job #2097023) | Cod sursa (job #645453) | Cod sursa (job #2526116) | Cod sursa (job #2095913)
#include <cstdio>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
FILE *f = fopen("ciclueuler.in","r");
FILE *g = fopen("ciclueuler.out","w");
int N,M;
vector<int> E;
vector<pair<int,int> > G[100005];
bool U[100005];
void euler(int nod){
E.push_back(nod);
while(!G[nod].empty()){
while(!G[nod].empty() && U[G[nod].back().second]){
G[nod].pop_back();
}
if(!G[nod].empty()){
int v = G[nod].back().first;
U[G[nod].back().second] = 1;
G[nod].pop_back();
euler(v);
}
}
}
int main()
{
fscanf(f,"%d %d",&N,&M);
for(int i = 1;i <= M;i++){
int x,y;
fscanf(f,"%d %d",&x,&y);
G[x].push_back({y,i});
G[y].push_back({x,i});
}
euler(1);
E.pop_back();
for(auto it:E){
fprintf(g,"%d ",it);
}
fclose(f);
fclose(g);
return 0;
}