cp-library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub kobejean/cp-library

:heavy_check_mark: cp_library/alg/graph/floyd_warshall_directed_fn.py

Required by

Verified with

Code

import cp_library.alg.graph.__header__
from math import inf

def floyd_warshall(G, N) -> list[list[int]]:
    D = [[inf]*N for _ in range(N)]

    for u, edges in enumerate(G):
        D[u][u] = 0
        for v,w in edges:
            D[u][v] = min(D[u][v], w)
    
    for k, Dk in enumerate(D):
        for Di in D:
            if Di[k] == inf: continue
            for j in range(N):
                if Dk[j] == inf: continue
                Di[j] = min(Di[j], Di[k]+Dk[j])
    return D
'''
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
             https://kobejean.github.io/cp-library               
'''
from math import inf

def floyd_warshall(G, N) -> list[list[int]]:
    D = [[inf]*N for _ in range(N)]

    for u, edges in enumerate(G):
        D[u][u] = 0
        for v,w in edges:
            D[u][v] = min(D[u][v], w)
    
    for k, Dk in enumerate(D):
        for Di in D:
            if Di[k] == inf: continue
            for j in range(N):
                if Dk[j] == inf: continue
                Di[j] = min(Di[j], Di[k]+Dk[j])
    return D
Back to top page