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