Pagini recente » Cod sursa (job #409386) | Cod sursa (job #2746232) | Cod sursa (job #440515) | Cod sursa (job #869714) | Cod sursa (job #3348916)
#include <fstream>
#include <vector>
std::ifstream fin("ciclueuler.in");
std::ofstream fout("ciclueuler.out");
using namespace std;
vector<vector<pair<int,int>>> G;
vector<int> ans;
vector<bool> VizM;
int N,M,cnt;
void read()
{
fin >> N >> M;
G.resize(N+1);
VizM.resize(M+1,0);
cnt = M;
int x,y;
for(int i = 1; i <= M; ++i)
{
fin >> x >> y;
G[x].push_back({y,i});
G[y].push_back({x,i});
}
}
void DFSE(int start)
{
for(auto vecin : G[start])
{
if(!VizM[vecin.second])
{
VizM[vecin.second] = 1;
//fout << start << ' ' << vecin.first << '\n';
DFSE(vecin.first);
}
}
ans.push_back(start);
}
int main()
{
ios::sync_with_stdio(false);
fin.tie(0);
read();
for(int i = 1; i <= N; ++i)
if(G[i].size() % 2)
{
fout << -1;
return 0;
}
DFSE(1);
for(int i = 0; i < M; ++i)
fout << ans[i] << ' ';
}