Cod sursa(job #2326962)

Utilizator EdgeLordXDOvidiuPita EdgeLordXD Data 24 ianuarie 2019 12:03:53
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 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],p[N],n,m;
vector<pair<int,int>> a[N];
bool v[5*N];
void dfs(int i){
    for(; p[i]<a[i].size(); ++p[i]){
        if(!v[a[i][p[i]].s]){
            v[a[i][p[i]].s]=1;
            dfs(a[i][p[i]].f);
        }
    }
    if(m--)
        out<<i<<" ";
}
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;
        }
    dfs(1);
	return 0;
}