Cod sursa(job #1802929)

Utilizator stefzahZaharia Stefan Tudor stefzah Data 10 noiembrie 2016 19:59:53
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,m,x,y,k,ok,g[500005],viz[500005],sol[500005],g1[500005],X[500005],Y[500005],viz1[500005];
vector<int>v[500005];
void DFS1(int q)
{int i,j;
for(i=0;i<g[q];i++)
if(viz1[v[q][i]]==0){viz1[v[q][i]]=1;//fout<<v[q][i]<<"||";
DFS1(X[v[q][i]]+Y[v[q][i]]-q);
}
k++;
sol[k]=q;
}
int main()
{int i1;
fin>>n>>m;
for(i1=1;i1<=m;i1++)
{fin>>x>>y;
g[x]++;
g[y]++;
v[x].push_back(i1);
v[y].push_back(i1);
X[i1]=x;
Y[i1]=y;
}
for(i1=1;i1<=n;i1++)
{if(g[i1]%2==1)ok=1;
}
if(ok==1)fout<<"-1";
else{k=0;
DFS1(1);
for(i1=1;i1<=m;i1++)
fout<<sol[i1]<<" ";
}
}