[Python] UnionFind ABC177D

ABC177D

Es gibt verschiedene Implementierungen von UnionFind, aber in dieser Frage ist es sehr einfach, die Implementierung zu lösen, die die Anzahl der Knoten im übergeordneten Array enthält. Die Anzahl der Knoten wird wie folgt gehalten.

-Wenn es ein Kind ist, speichert es die übergeordnete Knotennummer. Wenn es sich um eine Wurzel handelt, wird die Anzahl der Knoten als negative Zahl gespeichert. -Wenn die Zahl negativ ist, ist sie die Wurzel und ihr absoluter Wert repräsentiert die Anzahl der Knoten im Baum.

Beispielcode


import sys

#UnionFindTree-Klassendefinition
class UnionFind():
    #Klassenkonstruktor
    #Selbst ist die Instanz selbst
    def __init__(self, n):
        #Elternknoten-Initialisieren Sie auf 1
        self.parents = [-1] * n

    #Finde die Wurzel
    def find(self, x):
        if self.parents[x] < 0:
            return x
        else:
            self.parents[x] = self.find(self.parents[x])
            return self.parents[x]

    #X- und y-Bäume zusammenführen
    def union(self, x, y):
        #Auf der Suche nach Wurzeln
        x = self.find(x)
        y = self.find(y)

        if x == y:
            return

        if self.parents[x] > self.parents[y]:
            x, y = y, x

        self.parents[x] += self.parents[y]
        self.parents[y] = x


N, M = map(int, input().split())
info = [tuple(map(int, s.split())) for s in sys.stdin.readlines()]

#Erstellen einer Union Find-Instanz
uf = UnionFind(N)
for a, b in info:
    #Passen Sie den Index an, a,Baum beitreten b
    a -= 1; b -= 1
    uf.union(a, b)

ans = min(uf.parents)

print(-ans)

Recommended Posts

[Python] UnionFind ABC177D
[Python] ABC175D
[Python] DP ABC184D
Löse ABC168D in Python
Löse ABC167-D mit Python
[Python] Bisection-Suche ABC155D
Löse ABC159-D in Python
[Python] Kumulative Summe ABC179D
[Python] BFS (Suche nach Breitenpriorität) ABC168D
Implementierte Bildsegmentierung in Python (Union-Find)
[Python] Wie man nCk ableitet (ABC156-D)
Kafka Python
Python-Grundlagen ⑤
Python-Zusammenfassung
Python-Einschlussnotation
Python-Technik
Python studieren
Python-Memorandum
Python FlowFishMaster
Python-Dienst
Python-Tipps
Python-Funktion ①
Python-Grundlagen
Python-Memo
Ufo-> Python (3)
Python-Einschlussnotation
Installieren Sie Python
Python Singleton
Python-Grundlagen ④
Python-Memorandum 2
Python-Memo
Python Jinja2
Python-Inkrement
atCoder 173 Python
[Python] -Funktion
Python-Installation
Python installieren 3.4.3.
Versuchen Sie Python
Python-Memo
Python iterativ
Python-Algorithmus
Python2 + word2vec
[Python] -Variablen
Python sys.intern ()
Python-Tutorial
Python-Fraktion
Python Underbar Das ist was
Python-Zusammenfassung
Starten Sie Python
Hinweis: Python
Python-Grundlagen ③
Python-Protokoll ausgeben
Python-Grundlagen
[Scraping] Python-Scraping
Python-Update (2.6-> 2.7)