Pagini recente » Cod sursa (job #2983800) | Cod sursa (job #3279718) | Cod sursa (job #3273652) | Scrie articole | Cod sursa (job #3209870)
#include <iostream>
#include <fstream>
#include <vector>
#include <stdint.h>
const int32_t MAX_N = 100000;
std::vector<int32_t> adj[MAX_N];
bool used[MAX_N];
int32_t tree[MAX_N];
int32_t q[MAX_N];
int main() {
std::ifstream fin("mesaj4.in");
std::ofstream fout("mesaj4.out");
int32_t n, m;
fin >> n >> m;
for(int32_t i = 0; i != m; ++i) {
int32_t x, y;
fin >> x >> y;
--x; --y;
adj[x].push_back(y);
adj[y].push_back(x);
}
int32_t st = 0, dr = 1;
used[0] = true;
tree[0] = -1;
q[0] = 0;
for(; st != dr; ++st) {
int32_t node = q[st];
for(int32_t next : adj[node]) {
if(used[next])
continue;
used[next] = true;
tree[next] = node;
q[dr++] = next;
}
}
if(dr != n) {
fout << "-1";
} else {
fout << ((n - 1) << 1) << '\n';
for(int32_t i = n - 1; i; --i)
fout << (q[i] + 1) << ' ' << (tree[q[i]] + 1) << '\n';
for(int32_t i = 1; i != n; ++i)
fout << (tree[q[i]] + 1) << ' ' << (q[i] + 1) << '\n';
}
fin.close();
fout.close();
return 0;
}