Cod sursa(job #2486440)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 2 noiembrie 2019 21:28:33
Problema Sate Scor 15
Compilator py Status done
Runda Arhiva de probleme Marime 0.77 kb

def read_file(file_name):
  G = {}
  with open(file_name) as f:
    n, m, x, y = [int(x) for x in next(f).split()]
    for i in range(1, n+1):
      G[i] = {}

    for line in f:
      i, j, d = [int(x) for x in line.split()]
      G[i].update({j: d})
      G[j].update({i: -d})

  return n, x, y, G

def bfs(x, y, n, G):
  q = [(x, 0)]
  viz = [0] * (n+1)
  while len(q):
    (node, dist) = q.pop(0)
    for k in G[node]:
      if not viz[k]:
        d = dist+G[node][k]
        if k == y:
          return d
        viz[k] = 1
        q.append((k, d))


def write_file(file_name, res):
  with open('sate.out', 'a') as f:
    f.write(str(res))


def main():
  n, x, y, G = read_file("sate.in")
  res = bfs(x, y, n, G)
  write_file("sate.out", res)


if __name__ == "__main__":
  main()