Cod sursa(job #2532877)

Utilizator TeodorCotetCotet Teodor TeodorCotet Data 28 ianuarie 2020 15:59:40
Problema Sortare topologica Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.96 kb
import math

def in_gen(fname):
    with open(fname, 'rt') as fin:
        for line in fin:
            for val in line.split():
                yield int(val)

def solve(n, a):
    
    for k in range(1, n + 1):
        for i in range(1, n + 1):
            for j in range(1, n + 1):
                if a[i][k] + a[k][j] < a[i][j]:
                    a[i][j] = a[i][k] + a[k][j]
    
if __name__ == "__main__":

    it = in_gen('grader_test8.in')
    n = next(it)
    a = [[math.inf for _ in range(n + 1)] for _ in range(n + 1)]  
    
    for i in range(1, n + 1):
        for j in range(1, n + 1):
            a[i][j] = next(it)
            if a[i][j] == 0 and i != j:
                a[i][j] = math.inf
    solve(n, a)

    with open('royfloyd.out', 'wt') as fout:
        for i in range(1, n + 1):
            for j in range(1, n + 1):
                if a[i][j] == math.inf:
                    a[i][j] = 0
                fout.write(f'{a[i][j]} ')
            fout.write(f'\n')