restructure zeta/** to storage/zeta/**

This commit is contained in:
2025-05-10 21:54:24 +09:00
parent 2886820691
commit 2f2e0759fd
407 changed files with 7 additions and 1 deletions

View File

@@ -0,0 +1,48 @@
import sys
input = sys.stdin.readline
class MinimumSpanningTree:
def __init__(self, V: int, E: int, edges: list[tuple[int]]):
self.V = V
self.E = E
self.edges: list[tuple[int]] = edges
self.edges.sort(key=lambda x: x[2])
self.__parents = [i for i in range(self.V + 1)]
def __root(self, x: int) -> int:
node = x
while node != self.__parents[node]:
node = self.__parents[node]
return node
def __union(self, x: int, y: int):
rx = self.__root(x)
ry = self.__root(y)
if rx > ry:
self.__parents[ry] = rx
else:
self.__parents[rx] = ry
def solve(self):
mst = []
for e in self.edges:
a = e[0]
b = e[1]
if self.__root(a) == self.__root(b):
continue
mst.append(e)
self.__union(a, b)
if len(mst) == self.V - 1:
break
return sum(map(lambda x: x[2], mst))
if __name__ == "__main__":
V, E = map(int, input().split())
edges = [tuple(map(int, input().split())) for _ in range(E)]
solver = MinimumSpanningTree(V, E, edges)
print(solver.solve())