Cod sursa(job #3374226)

Utilizator GabrielPetrePetre Gabriel GabrielPetre Data 8 noiembrie 2026 21:00:02
Problema Sate Scor 0
Compilator py Status done
Runda Arhiva de probleme Marime 1.15 kb
from collections import deque

def solve():
    try:
        fin = open("sate.in", "r")
    except FileNotFoundError:
        return

    def get_ints():
        for line in fin:
            for token in line.split():
                yield int(token)

    tokens = get_ints()

    try:
        n = next(tokens)
        m = next(tokens)
        x = next(tokens)
        y = next(tokens)
    except StopIteration:
        fin.close()
        return

    adj = [[] for _ in range(n + 1)]

    for _ in range(m):
        i = next(tokens)
        j = next(tokens)
        d = next(tokens)
        adj[i].append((j, d))
        adj[j].append((i, -d))

    fin.close()

    visited = bytearray(n + 1)
    pos = [0] * (n + 1)

    q = deque([x])
    visited[x] = 1

    while q:
        u = q.popleft()

        if u == y:
            break

        for v, weight in adj[u]:
            if not visited[v]:
                visited[v] = 1
                pos[v] = pos[u] + weight
                q.append(v)

    with open("sate.out", "w") as fout:
        fout.write(f"{abs(pos[y])}\n")


if __name__ == '__main__':
    solve()