Cod sursa(job #3209870)

Utilizator DobraVictorDobra Victor Ioan DobraVictor Data 3 martie 2024 17:46:20
Problema Mesaj4 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#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;
}