Lösen mit Ruby AtCoder ABC177 D Union Find

Einführung

Dieses Thema

AtCoder Beginner Contest D - Friends Difficulty: 676

Dieses Thema, Union Find

Dies ist eine Anwendung des typischen Problems * B - Union Find - AtCoder *. Ruby

ruby.rb


class UnionFind
  def initialize(n)
    @parents = Array.new(n, -1)
  end
  def find(x)
    @parents[x] < 0 ? x : @parents[x] = find(@parents[x])
  end
  def parents
    @parents
  end
  def union(x, y)
    x = find(x)
    y = find(y)
    return if x == y
    if @parents[x] > @parents[y]
      x, y = y, x
    end
    @parents[x] += @parents[y]
    @parents[y] = x
  end  
end

n, m = gets.split.map(&:to_i)
u = UnionFind.new(n)
m.times do
  a, b = gets.split.map(&:to_i)
  u.union(a - 1, b - 1)
end
puts -u.parents.min

sub.rb


    @parents = Array.new(n, -1)

    @parents[x] += @parents[y]

Weisen Sie dem Array "@ parent" den Anfangswert "-1" zu. Fügen Sie als Nächstes den Anfangswert "-1" des gepaarten Arrays hinzu. Wenn Sie dies wiederholen, können Sie die Anzahl der Elemente in der Menge der Paare ermitteln.

sub.rb


@parents = [-3, 0, -2, 2, 0]

Wenn Sie im Fall von "Eingabebeispiel 1" die negativen Zahlen betrachten, sehen Sie, dass sie in Gruppen von "3" und "2" unterteilt sind. Daher ist die Ausgabe "3", die das größere Gruppenelement enthält.

Ruby
Codelänge(Byte) 548
Ausführungszeit(ms) 260
Erinnerung(KB) 15824

Zusammenfassung

Referenzierte Site

Recommended Posts

Lösen mit Ruby AtCoder ABC177 D Union Find
AtCoder ABC127 D Hash mit Ruby 2.7.1 zu lösen
AtCoder ABC129 D 2D-Array In Ruby und Java gelöst
[Bei Coder] Lösen Sie das ABC183 D-Problem mit Ruby
[Bei Coder] Lösen Sie das ABC182 D-Problem mit Ruby
AtCoder ABC 136 D Suche nach Breitenpriorität Gelöst in Ruby, Perl und Java
Atcoder ABC70 D Problem
Lösen mit Ruby, Perl und Java AtCoder ABC 128 C.
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 1)
Ruby mit AtCoder 6 lernen [Contest 168 Daher]
Lösen Sie mit ac-library-rb AtCoder Union Find (DSU)
Ruby mit AtCoder 7 lernen [Contest 168 Triple Dots]
[Anfänger] Lösen wir das AtCoder-Problem mit Ruby, während wir uns den Artikel ansehen!
Lösen Sie ARC104 D Multiset Mean mit Scala, Java, C ++, Ruby, Perl, Elixir
AtCoder ABC 111 C Hash-Sortierung In Ruby, Perl und Java gelöst
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 2) Dynamische Planungsmethode
AtCoder Anfängerwettbewerb 169 A, B, C mit Rubin
AtCoder ABC 169 C Gleitkomma, das in Ruby passt
[Competition Pro] Löse Rucksackprobleme mit Ruby
Löse Ruby TGIF
atcoder ABC113 C Problem
Erste Schritte mit Ruby
atcoder ABC115 C Problem
Evolve Eve mit Ruby
Lösen mit Ruby, Perl und Java AtCoder ABC 113 C Referenz
Ruby mit AtCoder 10 lernen [1. Algorithmus Praktischer Test DoubleCamelCase Sort]
Lernen Sie Ruby mit AtCoder Anfänger Auswahl [Münzen] Antworten Sie mit Funktionscode
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array