Pagini recente » Cod sursa (job #1178583) | Cod sursa (job #46252) | Cod sursa (job #1550690) | Cod sursa (job #946392) | Cod sursa (job #2861933)
#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 ;
*/
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) ;
}
fil(1) ;
if(rez.size() == q)
{
for(int f = 0 ; f < q ; f ++)
cout << rez[f] << " " ;
}
else cout << 1 ;
return 0 ;
}