Résolution avec Ruby AtCoder ABC177 D Union Find

introduction

Ce thème

AtCoder Beginner Contest D - Friends Difficulty: 676

Ce thème, Union Find

Ceci est une application du problème typique * 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]

Attribuez la valeur initiale «-1» au tableau «@ parents». Ensuite, ajoutez la valeur initiale «-1» du tableau apparié. En répétant cela, vous pouvez obtenir le nombre d'éléments dans l'ensemble de paires.

sub.rb


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

Dans le cas de l '«exemple d'entrée 1», si vous regardez les nombres négatifs, vous pouvez voir qu'ils sont divisés en groupes de «3» et «2». Par conséquent, la sortie sera "3", qui a l'élément de groupe le plus grand.

Ruby
Longueur du code(Byte) 548
Temps d'exécution(ms) 260
Mémoire(KB) 15824

Résumé

Site référencé

Recommended Posts

Résolution avec Ruby AtCoder ABC177 D Union Find
AtCoder ABC127 D hash à résoudre avec Ruby 2.7.1
Tableau 2D AtCoder ABC129 D résolu en Ruby et Java
[At Coder] Résolvez le problème ABC183 D avec Ruby
[At Coder] Résolvez le problème ABC182 D avec Ruby
Recherche de priorité de largeur AtCoder ABC 136 D résolue en Ruby, Perl et Java
Problème atcoder ABC70 D
Résolution avec Ruby, Perl et Java AtCoder ABC 128 C
Résolution avec Ruby, Perl et Java AtCoder ABC 129 C (Partie 1)
Apprendre Ruby avec AtCoder 6 [Concours 168 Donc]
Résoudre avec ac-library-rb AtCoder Union Find (DSU)
Apprendre Ruby avec AtCoder 7 [Contest 168 Triple Dots]
[Débutant] Résolvons le problème d'AtCoder avec Ruby en regardant l'article!
Résoudre la moyenne multiset ARC104 D avec Scala, Java, C ++, Ruby, Perl, Elixir
Tri par hachage AtCoder ABC 111 C résolu en Ruby, Perl et Java
Résolution avec Ruby, Perl et Java AtCoder ABC 129 C (Partie 2) Méthode de planification dynamique
AtCoder Beginner Contest 169 A, B, C avec rubis
AtCoder ABC 169 C virgule flottante qui tient dans Ruby
[Competition Pro] Résolvez les problèmes de sac à dos avec Ruby
Résoudre Ruby TGIF
Problème atcoder ABC113 C
Premiers pas avec Ruby
problème atcoder ABC115 C
Evolve Eve avec Ruby
Résolution avec Ruby, Perl et Java AtCoder ABC 113 C Reference
Apprendre Ruby avec AtCoder 10 [1er test pratique d'algorithme DoubleCamelCase Sort]
Apprendre Ruby avec la sélection des débutants AtCoder [Coins] Réponse avec un code court
Apprendre Ruby avec AtCoder 13 Comment créer un tableau à deux dimensions