Pagini recente » Monitorul de evaluare | Cod sursa (job #640608) | Cod sursa (job #404034) | Cod sursa (job #777591) | Cod sursa (job #3348915)
#include <fstream>
#include <vector>
#include <queue>
std::ifstream fin("ciclueuler.in");
std::ofstream fout("ciclueuler.out");
using namespace std;
vector<vector<pair<int,int>>> G;
queue<int> Q;
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;
--cnt;
//fout << start << ' ' << vecin.first << '\n';
DFSE(vecin.first);
}
}
Q.push(start);
}
int main()
{
ios::sync_with_stdio(false);
fin.tie(0);
read();
DFSE(1);
if(cnt != 0)
fout << -1;
else
while(Q.size() != 1)
{
fout << Q.front() << ' ';
Q.pop();
}
}