Pagini recente » Cod sursa (job #1331412) | Cod sursa (job #1839509) | Cod sursa (job #1876300) | Cod sursa (job #2487411) | Cod sursa (job #2121090)
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <vector>
using namespace std;
int main() {
FILE *fin, *fout;
int st[500001];
vector <int> lista[100001];
int sol[500001];
int n, m, i, j, steag=-1, fiu, a, b, k, nod;
fin = fopen("eulerian.in", "r");
fout = fopen("eulerian.out", "w");
fscanf(fin,"%d%d", &n, &m);
for(i=1;i<=m;i++){
fscanf(fin,"%d%d", &a, &b);
lista[a].push_back(b);
lista[b].push_back(a);
}
for(i=1;i<=n;i++){
if(lista[i].size()%2!=0&&lista[i].size()!=0)\
steag=-1;
}
k=1;
st[1]=1;
j=1;
while(k>0){
nod=st[k];
if(lista[nod].size()!=0){
fiu=lista[nod].back();
k++;
st[k]=fiu;lista[nod].pop_back();
lista[fiu].erase(find(lista[fiu].begin(), lista[fiu].end(), nod));
}
else{
sol[++j]=st[k];
k--;
}
}
if(steag==-1)
fprintf(fout,"-1");
else{
for(i=1;i<=j;i++){
fprintf(fout,"%d", sol[i]);
}
}
fclose(fin);
fclose(fout);
return 0;
}