Résolution avec Ruby et Python AtCoder ABC138 D Liste adjacente

introduction

Ce thème

AtCoder Beginner Contest D - Ki Difficulty: 923

Ce thème, liste adjacente

Problèmes tels qu'une version avancée de la * liste d'adjacence AtCoder ABC168 D résolue avec Ruby, Python et networkx *.

Cette fois, la valeur du compteur est envoyée de la racine de l'arbre à l'apex, alors préparez un tableau pour le compteur et transmettez la valeur du compteur en recherchant de la racine à l'apex. Ruby

ruby.rb


n, q = gets.split.map(&:to_i)
a = Array.new(n){[]}
n.pred.times do
    x, y = gets.split.map(&:to_i)
    a[x - 1] << y - 1
    a[y - 1] << x - 1
end
p = Array.new(n){0}
q.times do |i|
  x, y = gets.split.map(&:to_i)
  p[x - 1] += y
end
c = Array.new(n){0}
c[0] = 1
que = []
que << 0
while que.size > 0
  e = que.shift
  a[e].each do |i|
    next if c[i] > 0
    c[i] = 1
    p[i] += p[e]
    que << i
  end
end
puts p

index.rb


    p[i] += p[e]

La valeur du compteur est transmise ici. Python

python.py


from sys import stdin

def main():
    from collections import deque
    input = stdin.readline
    n, q = map(int, input().split())
    a = [[] for _ in range(n)]
    for i in range(n - 1):
        x, y = map(int, input().split())
        a[x - 1].append(y - 1)
        a[y - 1].append(x - 1)
    p = [0] * n
    for i in range(q):
        x, y = map(int, input().split())
        p[x - 1] += y
    c = [0] * n
    c[0] = 1
    que = deque([])
    que.append(0)
    while len(que) > 0:
        e = que.popleft()
        for i in a[e]:
            if c[i] > 0:
                continue
            c[i] = 1
            p[i] += p[e]
            que.append(i)
    for i in range(n):
        print(p[i])
main()

stdin.py


from sys import stdin
    input = stdin.readline

L'utilisation de stdin accélérera considérablement l'exécution.

Ruby Python Python (stdin) PyPy PyPy (stdin)
Longueur du code(Byte) 442 681 736 681 736
Temps d'exécution(ms) 802 1734 1044 1959 864
Mémoire(KB) 25468 53008 53040 105164 91852

Résumé

Recommended Posts

Résolution avec Ruby et Python AtCoder ABC138 D Liste adjacente
Résolution avec Ruby, Python et networkx AtCoder ABC168 D Liste adjacente
Résolution avec Ruby et Python AtCoder ABC178 D Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ABC151 D Recherche de priorité de largeur
AtCoder ABC 165 D Floor Function résolue en Ruby, Perl, Java et Python
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 131 D Tri des tableaux
Résolution avec Ruby et Python AtCoder ABC133 D Somme cumulée
Résolution avec Ruby et Python AtCoder ABC011 C Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ABC153 E Méthode de planification dynamique
Résolution en Ruby, Python et Java AtCoder ABC141 D Priority Queue
Résolution avec Ruby, Python et numpy AtCoder ABC054 B Calcul de la matrice
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 065 C-th power
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 107 B Manipulation de chaînes
Résoudre avec Ruby et Python AtCoder ABC084 D Somme cumulative des nombres premiers
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 A
Résolution avec Ruby et Python AtCoder ARC067 C factorisation premier
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 B
Résoudre AtCoder ABC168 avec python (A ~ D)
Manipulation de chaîne C AtCoder ABC110 à résoudre dans Ruby
AtCoder ABC130 D Dichotomie de la somme cumulée résolue par Ruby et Python
Résolution avec Ruby, Perl, Java et Python AtCoder AGC 033 A Recherche de priorité de largeur
Résolution avec Ruby, Perl, Java et Python AtCoder CADDi 2018 C factorisation premier
Résolution avec Ruby et Python AtCoder Tenka1 Programmer Contest C Somme cumulative
Résolvez AtCoder ABC166 avec python
AtCoder ABC 182 Python (A ~ D)
Simulation AtCoder ARC080 D résolue avec Ruby et Python
AtCoder ABC155 Problème D Pairs Review Note 2 NumPy et Python
Scraping avec Node, Ruby et Python
Résoudre ABC166 A ~ D avec Python
Résolution avec Ruby, Perl, Java et Python AtCoder Diverta 2019 Concours de programmation Manipulation de chaînes C
AtCoder ABC168 Une expression de cas résolue en Ruby et Python
AtCoder ARC104 B Somme cumulative résolue en Ruby, Python et Java
[AtCoder] Résoudre ABC1 ~ 100 Un problème avec Python
Crypter avec Ruby (Rails) et décrypter avec Python
Scraping Web facile avec Python et Ruby
AtCoder ABC 175 Python
Résolution avec Ruby et Python AtCoder ABC172 C Dichotomie de somme cumulée
[AtCoder] Résoudre un problème de ABC101 ~ 169 avec Python
Résolution du modèle Lorenz 96 avec Julia et Python
Défiez AtCoder (ABC) 164 avec Python! Un problème ~ C
[Explication AtCoder] Contrôlez les problèmes A, B, (C), D de ABC165 avec Python!
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 066 C Hash carré itératif
[Explication AtCoder] Contrôlez les problèmes A, B, C, D d'ABC181 avec Python!
Résolvez AtCoder 167 avec python
Ruby, Python et carte
Python et Ruby se séparent
Initialiser la liste avec python
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Gestion des versions de Node, Ruby et Python avec anyenv
AtCoder ABC 177 Python (A ~ E)
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Bleu clair avec AtCoder @Python
[Explication AtCoder] Contrôle ABC180 Problèmes A, B, C avec Python!
Python et matériel - Utilisation de RS232C avec Python -
Python sur Ruby et Ruby en colère sur Python