import csv from functools import lru_cache from pathlib import Path # CSV должен лежать рядом с этим файлом программы. path = Path(__file__).with_name("learn-ege-22-processes.csv") processes = {} with path.open(encoding="utf-8-sig", newline="") as f: for row in csv.DictReader(f, delimiter=";"): number = int(row["id"]) duration = int(row["duration"]) parents = [int(x) for x in row["depends"].split(",") if int(x) != 0] processes[number] = (duration, parents) @lru_cache(maxsize=None) def finish(number): duration, parents = processes[number] start = max((finish(p) for p in parents), default=0) return start + duration for number in sorted(processes): duration, _ = processes[number] end = finish(number) print(number, end - duration, end) print("Общее время:", max(finish(p) for p in processes))