Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- namespace ListasDeAdyacencia {
- using std::vector;
- using std::cout;
- vector<vector<int>> Vecinos;
- vector<bool> Visitado;
- void AgregarArista(int a, int b) {
- Vecinos[a].push_back(b);
- Vecinos[b].push_back(a);
- }
- void Inicializar(int n) {
- Vecinos = vector<vector<int>>(n);
- Visitado = vector<bool>(n, false);
- }
- void Visitar(int vertice_actual) {
- if (Visitado[vertice_actual]) {
- return;
- }
- Visitado[vertice_actual] = true;
- cout << "Visitar " << vertice_actual + 1 << std::endl;
- for (int vecino : Vecinos[vertice_actual]) {
- Visitar(vecino);
- }
- }
- };
- namespace MatrizDeAdyacencia {
- using std::vector;
- using std::cout;
- using Matriz = vector<vector<bool>>;
- Matriz A;
- vector<bool> Visitado;
- void Inicializar(int n) {
- A = Matriz(n, vector<bool>(n, false));
- Visitado = vector<bool>(n, false);
- }
- void AgregarArista(int a, int b) {
- A[a][b] = true;
- A[b][a] = true;
- }
- void Visitar(int vertice_actual) {
- if (Visitado[vertice_actual]) {
- return;
- }
- Visitado[vertice_actual] = true;
- cout << "Visitar " << vertice_actual + 1 << std::endl;
- const int NumeroDeVertices = Visitado.size();
- for (int vecino = 0; vecino < NumeroDeVertices; ++vecino) {
- if (A[vertice_actual][vecino]) {
- Visitar(vecino);
- }
- }
- }
- }
- int main() {
- using std::cin;
- using std::cout;
- using namespace ListasDeAdyacencia;
- // using namespace MatrizDeAdyacencia;
- int NumVertices, NumAristas;
- cin >> NumVertices >> NumAristas;
- Inicializar(NumVertices);
- for (int i = 0; i < NumAristas; ++i) {
- int a, b;
- cin >> a >> b;
- AgregarArista(a - 1, b - 1);
- }
- Visitar(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment