Pagini recente » Cod sursa (job #1794329) | Monitorul de evaluare | Istoria paginii runda/simulusu3trei | Cod sursa (job #1444025) | Cod sursa (job #658519)
Cod sursa(job #658519)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
FILE *g=fopen("ciclueuler.out","w");
int i,j,n,m,k,x,y;
bool viz[100002];
queue<int> q;
struct vec
{
int nod,poz;
};
vector<vec> a[100002];
void det(int x)
{
int i;
q.push(x);
while(!q.empty())
{
x=q.front();
fprintf(g,"%d ",x);
for(i=a[x].size()-1;i>=0;--i)
if(!viz[a[x][i].poz])
{
//fprintf(g,"%d %d\n",a[x][i].nod,a[x][i].poz);
viz[a[x][i].poz]=1;
q.push(a[x][i].nod);
//a[x].erase(a[x].begin()+i);
break;
}
//fprintf(g,"%d ",q.back());
/*if(!q.back())
{
if(q.size()>1)
fprintf(g,"%d ",x);*/
q.pop();
//}
}
}
int main()
{
FILE *f=fopen("ciclueuler.in","r");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=m;++i)
{
fscanf(f,"%d%d",&x,&y);
a[x].push_back((vec) {y,i});
a[y].push_back((vec) {x,i});
}
for(i=1;i<=n;++i)
if(a[i].size()%2!=0)
{
fprintf(g,"-1\n");
return 0;
}
det(1);
return 0;
}