Algoritmos Kruskal y Prim para Árboles de Expansión Mínima
Algoritmo de Kruskal
Este método ordena todas las aristas por peso asecndente y las añade al árbol siempre que no generen ciclos, utilizando una estructura de Union-Find para gestionar componentes conexas. La complejidad temporal es O(m log m) debido a la ordenación.
struct Arista {
int origen, destino, costo;
} aristas[10000];
bool ordena ...
Publicado el 7-1 23:21
Soluciones al Concurso Principiante de AtCoder 335
Problema A: Cammbiar el último carácter
Modificar el último carácter de una cadena de entrada a '4'.
#include <bits/stdc++.h>
using namespace std;
void resolver() {
string entrada;
cin >> entrada;
entrada.back() = '4';
cout << entrada << endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie( ...
Publicado el 6-30 06:11
Grafo con Bordes Coloridos y Conexión por Color mediante Union-Find Bidimensional
El Sr. Kitayuta posee un grafo no dirigido compuesto por n vértices y m bordes. Cada borde, identificado por un índice, tiene un color asignado y enlaza dos vértices específicos. Se requiere responder a una serie de consultas donde, dados dos vértices u y v, se debe determinar la cantidad de colores que permiten conectarlos ya sea directa o ind ...
Publicado el 6-13 23:59
Identificación de Falsas Declaraciones en Cadenas Alimenticias con Union-Find
En un reino animal existen tres tipos de criaturas: A, B y C, cuyas relaciones de depredación forman un ciclo: A se alimenta de B, B de C y C de A. Se nos presanta un conjunto de N animales, identificados del 1 al N. Cada animal pertenece a una de estas tres categorías, pero su tipo específico es desconocido inicialmente.
Se nos proporcionan K ...
Publicado el 6-4 01:48
Notas de Repaso sobre Union-Find
Implementación básica y aplicaciones de la estructura de datos Union-Find (Conjuntos Disjuntos).
Ejemplo Básico: Union-Find con Compresión de Rutas
Implementación estándar con las operaciones de find y union. Se utiliza compresión de rutas para optimizar las búsquedas.
#include <iostream>
using namespace std;
const int MAX_N = 10010;
int ...
Publicado el 6-3 19:47
Editorial completo del AtCoder Regular Contest 111
A - Aritmética básica 2
Dados \(N\) y \(M\) con \(N \leq 10^{18}\) y \(M \leq 10^4\), calcular \(\lfloer 10^N / M \rfloor\).
Enfoque óptimo: Al expandir \((am + b) \times (cm + d) \bmod m\), se observa que el término \(am^2\) no contribuye tras dividir por \(m\) y aplicar módulo \(m\), ya que da cero. Esto permite ejecutar exponenciación rápida ...
Publicado el 6-3 00:02