Cod sursa(job #3373682)

Utilizator MrbgdBogdan Mrbgd Data 7 noiembrie 2026 16:20:28
Problema Sate Scor 0
Compilator py Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 1.11 kb
from array import array
from collections import deque


def distanta_intre_sate(adiacenta, x, y):
    pozitie = [None] * len(adiacenta)
    pozitie[x] = 0

    coada = deque([x])
    while coada:
        sat = coada.popleft()
        if sat == y:
            return abs(pozitie[sat])
        vecini = adiacenta[sat]
        for i in range(0, len(vecini), 2):
            vecin = vecini[i]
            if pozitie[vecin] is None:
                diferenta = vecini[i + 1]
                pozitie[vecin] = pozitie[sat] + diferenta
                coada.append(vecin)


def main():
    with open("sate.in", "rb") as intrare:
        n, m, x, y = map(int, intrare.readline().split())
        adiacenta = [array("i") for _ in range(n + 1)]
        for _ in range(m):
            stanga, dreapta, distanta = map(int, intrare.readline().split())
            adiacenta[stanga].extend((dreapta, distanta))
            adiacenta[dreapta].extend((stanga, -distanta))

    with open("sate.out", "w") as iesire:
        print(distanta_intre_sate(adiacenta, x, y), file=iesire)


if __name__ == "__main__":
    main()