Pagini recente » Cod sursa (job #207571) | Cod sursa (job #635352) | Cod sursa (job #2219905) | Cod sursa (job #2771267) | Cod sursa (job #2615062)
#include <fstream>
#include <vector>
#include <bitset>
#define nMax 100005
using namespace std;
void euler(int nod, vector<pair<int, int>> G[nMax], vector<int>& e, bitset<5*nMax>& viz)
{
while(!G[nod].empty())
{
pair<int, int> it=G[nod].back();
G[nod].pop_back();
if(!viz[it.second])
{
viz[it.second]=1;
euler(it.first, G, e, viz);
}
}
e.push_back(nod);
}
int main(int argc, char* argv[])
{
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m;
fin >> n >> m;
vector<pair<int, int>> G[nMax];
for(int i=1; i<=m; i++)
{
int x, y;
fin >> x >> y;
G[x].push_back({y, i});
G[y].push_back({x, i});
}
for(int i=1; i<=n; i++)
if(G[i].size()%2)
{
fout << -1;
return 0;
}
vector<int> e;
bitset<5*nMax> viz;
euler(1, G, e, viz);
for(int i=0; i<e.size()-1; i++)
fout << e[i] << ' ';
fin.close();
fout.close();
return 0;
}