Pagini recente » Cod sursa (job #1270778) | Cod sursa (job #5140) | Cod sursa (job #1131122) | Cod sursa (job #2884807) | Cod sursa (job #2172235)
#include <bits/stdc++.h>
#define N 100001
using namespace std;
ifstream fin("ciclueuler.in") ;
ofstream fout("ciclueuler.out") ;
vector<int> graf[N] ;
int grad[N], sos[N] , dest[N] ;
bool viz[N] ;
int n , m;
vector<int> sol;
void citire()
{
int i , x , y ;
fin >> n >> m ;
for ( i = 1 ; i <= m ; i++ )
{
fin >> x >> y ;
graf[x].push_back(i) ;
graf[y].push_back(i) ;
grad[x]++ ;
grad[y]++ ;
sos[i] = x;
dest[i] = y;
}
}
void euler (int nod)
{
int fiu ;
while(!graf[nod].empty())
{
fiu = graf[nod].back() ;
graf[nod].pop_back();
if ( viz[fiu] == false )
{
viz[fiu] = true ;
if ( sos[fiu] == nod )
euler(dest[fiu]) ;
else
euler(sos[fiu]) ;
}
}
sol.push_back(nod) ;
}
int main()
{
int i ;
citire() ;
for ( i = 1 ; i <= n ; i++ )
{
if ( grad[i]%2 == 1 )
{
fout <<"-1" ;
return 0;
}
}
euler(1) ;
for ( i = 0 ; i < sol.size()-1 ; i++ )
fout << sol[i] << " " ;
}