Pagini recente » Cod sursa (job #761858) | Cod sursa (job #2958696) | Cod sursa (job #2101299) | Cod sursa (job #696419) | Cod sursa (job #2128165)
#include <cstdio>
#include <vector>
#include <stack>
using namespace std;
FILE * in=fopen("ciclueuler.in","r");
FILE * out=fopen("ciclueuler.out","w");
int n,m,visited[500005];
vector <pair <int,int>> G[100005];
stack <int> q;
vector <int> ans;
int main()
{
fscanf(in,"%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int x,y;
fscanf(in,"%d%d",&x,&y);
G[x].push_back({y,i});
G[y].push_back({x,i});
}
q.push(1);
while(!q.empty())
{
int nod =q.top();
if(G[nod].empty())
{
q.pop();
ans.push_back(nod);
}
else
{
int x,y;
x = G[nod].back().first;
y = G[nod].back().second;
G[nod].pop_back();
if(!visited[y])
{
visited[y]=1;
q.push(x);
}
}
}
for(int i=0;i<m;i++)
fprintf(out,"%d ",ans[i]);
return 0;
}