Résolution avec Ruby AtCoder ACL Débutant Contest C Union Find (DSU)

introduction

Ce thème

AtCoder Beginner Contest C - Connect Cities Difficulty: 363

Ce thème, Union Find

Tout récemment, il y a eu problème similaire et AtCoder Library Practice Contest. Cependant, le taux de cendres est incroyable. Au fait, la dernière fois, c'était Difficulté: 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 #cette fois

puts -u.parents.min #Dernière fois

Changez simplement la dernière ligne de Last time --Qiita en ʻAC`.

sub.rb


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

Expliquer dans l '«exemple d'entrée 1» précédent, dans «u.parents», «u.parents [0]» et «u.parents [2]» peuvent être divisés en deux groupes représentatifs. Ce n'est pas grave si vous le connectez à une seule route.

Version Ruby de la bibliothèque AtCoder (ACL)

Il y a aussi un mouvement pour créer une version Ruby d'ACL à here --github. C'est «attention requise».

Ruby
Longueur du code(Byte) 567
Temps d'exécution(ms) 170
Mémoire(KB) 15612

Résumé

  • Résolu ACLBC C
  • Familiarisez-vous avec Ruby

Site référencé

Recommended Posts

Résolution avec Ruby AtCoder ACL Débutant Contest C Union Find (DSU)
Résoudre avec ac-library-rb AtCoder Union Find (DSU)
Résolution avec Ruby, Perl et Java AtCoder ABC 128 C
AtCoder Beginner Contest 170 A, B, C jusqu'au rubis
Résolution avec Ruby, Perl et Java AtCoder ABC 129 C (Partie 1)
Apprendre Ruby avec AtCoder 6 [Concours 168 Donc]
AtCoder Beginner Contest 167 Problème C (Java)
Apprendre Ruby avec AtCoder 7 [Contest 168 Triple Dots]
Résolution avec Ruby, Perl et Java AtCoder ABC 129 C (Partie 2) Méthode de planification dynamique
Concours AtCoder Débutant 168
Article sur la participation au concours AtCoder
AtCoder Débutant Contest 132 D Problème
Recherche de priorité de largeur AtCoder ABC 136 D résolue en Ruby, Perl et Java
Résolution avec Ruby AtCoder 1er test pratique de l'algorithme Une gestion des exceptions
Résolvez AtCoder Beginner Contest 151 avec Java
Résolvez AtCoder Beginner Contest 150 avec Java
Résolvez AtCoder Beginner Contest 153 avec Java
Résolvez AtCoder Beginner Contest 175 avec Java
Résolvez AtCoder Beginner Contest 160 avec Java
Résolvez AtCoder Beginner Contest 152 avec Java
Résolvez AtCoder Beginner Contest 156 avec Java
[Débutant] Résolvons le problème d'AtCoder avec Ruby en regardant l'article!