Cod sursa(job #2326740)

Utilizator EdgeLordXDOvidiuPita EdgeLordXD Data 23 ianuarie 2019 22:23:39
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include<bits/stdc++.h>
#define s second
#define f first
#define N 100001
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int r[N],n,m,k=-1;
vector<pair<int,int>> a[N];
bool v[5*N];
void dfs(int i, int j){
    ++k;
    for(auto it:a[i]){
        if(!v[it.s]){
            v[it.s]=1;
            dfs(it.f, it.s);
        }
    }
    if(k==m)
        out<<i<<" ", --m;
    else v[j]=0;
	--k;
}
int main(){
    int i,j,x,y;
    in>>n>>m;
    for(i=1; i<=m; ++i){
        in>>x>>y;
        a[x].push_back({y,i});
        a[y].push_back({x,i});
        ++r[x], ++r[y];
    }
    for(i=1; i<=n; ++i)
        if(r[i]%2){
            out<<-1;
            return 0;
        }
	out<<"1 ";
    dfs(1,0);
	return 0;
}