Lösen mit Ruby AtCoder ACL Anfängerwettbewerb C Union Find (DSU)

Einführung

Dieses Thema

AtCoder Beginner Contest C - Connect Cities Difficulty: 363

Dieses Thema, Union Find

Vor kurzem gab es Ähnliches Problem und AtCoder Library Practice Contest. Die Ascherate ist jedoch erstaunlich. Das letzte Mal war es übrigens Schwierigkeitsgrad: 676 </ font>. 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.select{ _1 < 0 }.size - 1

sub.rb


puts u.parents.select{ _1 < 0 }.size - 1 #diesmal

puts -u.parents.min #Letztes Mal

Ändern Sie einfach die letzte Zeile von Last time --Qiita in "AC".

sub.rb


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

Wie im vorherigen "Eingabebeispiel 1" erläutert, können "u.parents [0]" und "u.parents [2]" in "u.parents" in zwei repräsentative Gruppen unterteilt werden. Es ist in Ordnung, wenn Sie es mit einer Straße verbinden.

Ruby-Version der AtCoder Library (ACL)

Es gibt auch eine Möglichkeit, eine Ruby-Version von ACL unter here --github zu erstellen. Es ist "Aufmerksamkeit erforderlich".

Ruby
Codelänge(Byte) 567
Ausführungszeit(ms) 170
Erinnerung(KB) 15612

Zusammenfassung

  • Gelöste ACLBC C.
  • Machen Sie sich mit Ruby vertraut

Referenzierte Site

Recommended Posts

Lösen mit Ruby AtCoder ACL Anfängerwettbewerb C Union Find (DSU)
Lösen Sie mit ac-library-rb AtCoder Union Find (DSU)
Lösen mit Ruby, Perl und Java AtCoder ABC 128 C.
AtCoder Anfängerwettbewerb 170 A, B, C bis Rubin
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 1)
Ruby mit AtCoder 6 lernen [Contest 168 Daher]
AtCoder Anfängerwettbewerb 167 C Problem (Java)
Ruby mit AtCoder 7 lernen [Contest 168 Triple Dots]
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 2) Dynamische Planungsmethode
AtCoder Anfängerwettbewerb 168
AtCoder Beginner Contest 182 Teilnahmeartikel
AtCoder Anfängerwettbewerb 132 D Problem
AtCoder ABC 136 D Suche nach Breitenpriorität Gelöst in Ruby, Perl und Java
Lösen mit Ruby AtCoder 1. Algorithmus Praktischer Test Eine Ausnahmebehandlung
Löse den AtCoder-Anfängerwettbewerb 151 mit Java
Löse den AtCoder Beginner Contest 150 mit Java
Löse den AtCoder-Anfängerwettbewerb 153 mit Java
Löse den AtCoder-Anfängerwettbewerb 175 mit Java
Löse den AtCoder-Anfängerwettbewerb 160 mit Java
Löse den AtCoder-Anfängerwettbewerb 152 mit Java
Löse den AtCoder-Anfängerwettbewerb 156 mit Java
[Anfänger] Lösen wir das AtCoder-Problem mit Ruby, während wir uns den Artikel ansehen!