Universal Cup Judging System

Universal Cup

시간 제한: 3 s 메모리 제한: 1024 MB 총점: 100
통계

En general, una criptomoneda basada en Tangle funciona así. Hay un grafo dirigido acíclico (DAG) que llamamos Tangle. Su red está compuesta por nodos, entidades que emiten y validan transacciones. Las transacciones emitidas constituyen el conjunto de vértices del grafo Tangle, el registro que las almacena. Su conjunto de aristas se obtiene así: cuando llega una nueva transacción $X$, debe aprobar dos anteriores. Estas aprobaciones se representan por aristas dirigidas, como en la figura 4(a). Si no hay una arista dirigida entre las transacciones $A$ y $G$, pero hay un camino dirigido de longitud al menos dos de $A$ a $G$, decimos que $A$ aprueba indirectamente a $G$. En la figura 4(a), $A$ aprueba directamente a $B$ y $D$, e indirectamente a $F$, $G$, $H$ e $I$. Definimos los “Tips” como transacciones no aprobadas en el grafo Tangle. En la instantánea de la figura 4(a), los Tips son $A$ y $C$. Cuando llega $X$ y aprueba a $A$ y $C$ en la instantánea de la figura 4(b), $X$ se convierte en el único Tip.

problem_5663_9b9dc5cc18476daa62e1afc5afefb13a.png

Figura 4: Un grafo Tangle con pesos antes y después de emitir una nueva transacción $X$. Las cajas representan transacciones; el número pequeño de la esquina inferior derecha (sureste, SE) de cada caja indica el peso propio y el número en negrita indica el peso acumulado.

Definimos el peso de una transacción y conceptos relacionados. El peso es proporcional al trabajo que su nodo emisor invirtió en ella. Lo único importante es que cada transacción lleva asociado un entero positivo, su peso. En general, la idea es que una transacción con mayor peso es más “importante” que una de menor peso. Supongamos que $X$ tiene un peso propio $W_X$, donde $1 \le W_X \le W_{\max}$. Su peso acumulado $CW_X$ es la suma de su peso y de los pesos de todas las transacciones que la aprueban directa o indirectamente. La figura 4 ilustra su cálculo. Las cajas representan transacciones; el número pequeño de la esquina inferior derecha es el peso propio y el número en negrita es el acumulado. Por ejemplo, las transacciones $A$, $B$, $C$ y $E$ aprueban directa o indirectamente a $F$.

El peso acumulado de $F$ es $CW_F=3+1+3+1+1=9$, la suma del peso propio de $F$ y los pesos de $A$, $B$, $C$ y $E$, respectivamente. Tras la aprobación de la nueva transacción $X$ ($W_X=3$), el peso acumulado de todas las demás aumenta en $3$. El peso acumulado mide el esfuerzo computacional que respalda la transacción. Al alcanzar un umbral $TH$, se marca como confirmada, pues la probabilidad de una modificación maliciosa es baja. En otras palabras, al recibir aprobaciones adicionales, el sistema la acepta con mayor confianza. Las transacciones aprobadas con peso acumulado menor que el límite superior se llaman no confirmadas. Si $TH=12$, las transacciones $F$, $G$, $H$ e $I$ de la figura 4 están confirmadas. Al inicio de Tangle había una dirección cuyo saldo contenía todos los tokens. La transacción Genesis los envió a varias direcciones “fundadoras”. Todos los tokens se crearon en Genesis. Por tanto, todas las demás transacciones aprueban a Genesis directa o indirectamente (figura 5). Inicialmente, al crear una transacción, un nodo selecciona dos Tips (transacciones no aprobadas) mediante un algoritmo de selección de Tips. Cada nueva transacción debe aprobar dos anteriores, representadas por aristas dirigidas. Los demás nodos la verifican y la añaden como un nuevo Tip al DAG. Al añadirse como Tip, no está aprobada. Cuando una transacción posterior selecciona ese Tip, pasa a estar aprobado. El peso acumulado asociado a una transacción se actualiza cada vez que otra la aprueba directa o indirectamente.

problem_5663_54d37f83162a0a07819d5f60470669d5.png

Figura 5: Un grafo Tangle con pesos asignados a cada transacción

Por comodidad, el Tangle inicial se muestra en la figura 6(a). Una nueva transacción $X$ selecciona dos Tips $Y$ y $Z$ (transacciones no aprobadas) mediante un algoritmo de selección de Tips. La figura 6(b) muestra las notaciones de los pesos y los pesos acumulados de $X$, $Y$ y $Z$, respectivamente.

problem_5663_7bb163e2b71723394945e1403d1b5d4f.png

(a) El Tangle inicial. (b) $X$ aprueba a $Y$ y $Z$. Figura 6: Un grafo Tangle con pesos asignados a cada transacción

problem_5663_538d7a3cdb1d21db911c5376e6681e1f.png

Figura 7: El grafo Tangle de la entrada de ejemplo 1, donde $TH=12$ ($CW_X \ge TH$ para $T_2$ y $T_3$).

Entrada

La primera línea contiene un par de enteros $n$, $TH$, donde $n$ indica la cantidad de transacciones y $TH$ el umbral del peso acumulado. Las transacciones se dan en orden creciente de $X$. Cada una ocupa una línea con una lista de enteros $X$, $Y$, $Z$, $W_X$, donde $2 \le X \le 10000$, $0 \le Y,Z \le X-1$, $Y \ne Z$ y $1 \le W_X \le 5$.

Restricciones

  • $1 \le n \le 10000$
  • $2 \le X \le n+1$
  • $0 \le Y,Z \le X-1$, $Y \ne Z$

Salida

Tras procesar las $n$ transacciones, para una transacción $T_X$ en $\{T_2,T_3,\ldots,T_n\}$ con $CW_X \ge TH$, imprime la lista de valores $X$, $CW_X$ en orden creciente de $X$. Cada línea contiene una transacción. Finalmente imprime la cantidad total de transacciones confirmadas.

Ejemplos

Entrada 1

6 12
2 0 1 3
3 0 2 2
4 1 2 1
5 2 3 3
6 3 4 4
7 3 5 5

Salida 1

2 18
3 14
2

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.