[Python] DFS (recherche de priorité en profondeur) ABC157D

ABC157D

UnionFind Tree est la norme, mais les débutants doivent d'abord maîtriser DFS. N'utilisez pas de fonctions récursives pour des opérations simples.

référence ABC 157 D Commentaires doux sur le problème

Exemple de code


N, M, K = map(int, input().split())
F = [[] for _ in range(N)]
B = [[] for _ in range(N)]

#Liste d'amis adjacente
for _ in range(M):
    a, b = map(int, input().split())
    a, b = a - 1, b - 1
    F[a].append(b)
    F[b].append(a)

#Liste adjacente de blocs
for _ in range(K):
    c, d = map(int, input().split())
    c, d = c - 1, d - 1
    B[c].append(d)
    B[d].append(c)


#Groupe d'amitié (type de dictionnaire)
D = {}
#Parent de groupe
parent = [-1] * N
#Gestion des visites
visited = [False] * N

for root in range(N):
    if visited[root]:
        continue

    D[root] = set([root])
    #Pile visitée
    stack = [root]
    #Jusqu'à ce qu'il n'y ait plus d'endroits à visiter
    while stack:
        #Pop up visiteurs
        n = stack.pop()
        #Visiteur visité
        visited[n] = True
        #Définir les parents pour un groupe de visiteurs
        parent[n] = root

        #Ajouter des amis root aux groupes et aux destinations
        for to in F[n]:
            if visited[to]:
                continue
            D[root].add(to)
            stack.append(to)

ans = [0] * N
for iam in range(N):
    #Créez votre propre groupe d'amitié
    group = D[parent[iam]]
    #Supprimer des amis et vous-même du groupe
    tmp_ans = len(group) - len(F[iam]) - 1
    #Supprimer les blocs du groupe
    for block in B[iam]:
        if block in group:
            tmp_ans -= 1
    ans[iam] = tmp_ans

print(*ans, sep=' ')

Recommended Posts

[Python] DFS (recherche de priorité en profondeur) ABC157D
[Python] DFS (recherche de priorité en profondeur) ATC001A
Algorithme en Python (recherche de priorité en profondeur, dfs)
[Python] Recherche de bisection ABC155D
[Python] BFS (recherche de priorité de largeur) ABC168D
[Python] Recherche de priorité de profondeur et recherche de priorité de largeur
[Python] ABC175D
Implémenter la recherche de priorité en profondeur (DFS) et la recherche de priorité de largeur (BFS) en python
Écrire une recherche de priorité en profondeur en Python
Recherche de priorité de profondeur à l'aide de la pile en Python
[Python] DP ABC184D
[Python] DFS AGC044A
[Python] UnionFind ABC177D
J'ai essayé de résoudre la recherche de priorité de profondeur (DFS) d'AtCoder en Python (résultat: TLE ...)
Résoudre ABC168D en Python
Résolvez ABC167-D avec Python
Exercice Python Recherche prioritaire sur 1 largeur
[Python] Recherche (itertools) ABC167C
[Python] Recherche (NumPy) ABC165C
Recherche de bisection (python2.7) mémo
Résoudre ABC159-D en Python
recherche complète de bits python
Recherche linéaire en Python
Dichotomie avec python
Dichotomie avec Python 3
Rechercher sur Twitter avec Python
Recherche binaire en Python
[Python] Somme cumulée ABC179D
Recherche de priorité de largeur / recherche bidirectionnelle (édition Python)
Algorithme de recherche utilisant word2vec [python]
Homebrew Python - Programme de recherche YouTube
[At Coder] Résoudre les problèmes typiques de la recherche de priorité en profondeur (DFS)
Recherche binaire en Python / C ++
Algorithme en Python (dichotomie)
Recherche de bits complète avec Python
Les moteurs de recherche fonctionnent avec python
Rechercher des tweets Twitter avec Python
Rationalisez la recherche Web avec Python
Recherche de priorité de profondeur (type non récursif) et méthode d'élagage de limite inférieure (édition Python)
[Algorithme Python] Un programme qui génère des réponses en allemand et en allemand à partir de la recherche de priorité en profondeur
Algorithme en Python (recherche de priorité de largeur, bfs)
Ecrire une dichotomie en Python
[Python] Comment dériver nCk (ABC156-D)
Recherche de priorité de largeur (BPF) Peut-être compris (python)
Maîtrisez la recherche linéaire! ~ Version d'implémentation Python ~
(Python) ABC162-D Journal de discussion et solution
Reproduire la recherche à une touche avec Python 3.7.3. (Windows 10)
Recherche de 2 minutes Python et ses dérivés