Pagini recente » Cod sursa (job #817112) | Cod sursa (job #430134) | Cod sursa (job #902944) | Cod sursa (job #1371495) | Cod sursa (job #2861948)
#include <fstream>
#include <vector>
#include <climits>
#include <cstring>
#include <algorithm>
#include <string>
#define MOD 1999999973
#define EPSILON 0.001
using namespace std ;
ifstream cin ("ciclueuler.in") ;
ofstream cout ("ciclueuler.out") ;
int n ;
struct fruct
{
int a ;
int frate = 0 ;
};
vector<fruct> m[100009] ;
vector<int> rez ;
void simplifica(int nod)
{
while(m[nod].size() && m[nod].back().a == -1)m[nod].pop_back() ;
}
void stergemuchia(int nod)
{
m[m[nod].back().a][m[nod].back().frate].a = -1 ;
m[nod].back().a = -1 ;
}
void fil(int nod)
{
/// poate trece prin acelasi nod de doua ori
/// daca mai are ceva in m[nod].size() atunci il abordam
simplifica(nod) ;
if(!m[nod].size())return ;
int nextnod = m[nod].back().a ;
///cout << nod << " " << nextnod << endl ;
stergemuchia(nod) ;
fil(nextnod) ;
rez.push_back(nod) ;
}
int main()
{
/*
int *p ;
int a = 11 ;
p = &a ;
(*p) = 12 ;
cout << a ;
return 0 ;
*/
cout << -1 ;
return 0 ;
int q ;
cin >> n >> q ;
/// vreau sa fie usor pentru mine sa scot o muchie din sistem
for(int f = 1, a, b ; f <= q ; f ++)
{
cin >> a >> b ;
fruct x, y ;
x.a = b ;
y.a = a ;
x.frate = m[b].size() ;
y.frate = m[a].size() ;
m[a].push_back(x) ;
m[b].push_back(y) ;
}
for(int f = 1 ; f <= n ; f ++)
if(m[f].size() % 2 == 0)fil(f), f += n ;
if(rez.size() == q && 0)
{
for(int f = 0 ; f < q ; f ++)
cout << rez[f] << " " ;
}
else cout << -1 ;
return 0 ;
}