154552025-02-19 17:17:51AblablablaAutópálya inflációpypy3Runtime error 15/100782ms131072 KiB
import sys
import heapq
from decimal import Decimal, getcontext

INF = -1
MOD = int(1e9 + 7)

n, m = map(int, input().split())

csucsok = [[] for _ in range(n)]
hossz = [[] for _ in range(n)]
for _ in range(m):
    a, b, c = map(int, input().split())
    a -= 1
    b -= 1

    csucsok[a].append(b)
    hossz[a].append(c)
    csucsok[b].append(a)
    hossz[b].append(c)

class Comp:
    def __init__(self, ans, mely):
        self.ans = ans
        self.mely = mely

    def __call__(self, a, b):
        if self.ans[a] == self.ans[b]:
            return self.mely[a] > self.mely[b]
        return self.ans[a] > self.ans[b]

bejar = []
ans = [INF] * n
ans[0] = 0
heapq.heappush(bejar, (ans[0], 0))
bejart = [False] * n
opciok = [[INF] * (n + 2) for _ in range(n)]
opciok[0][1] = 0
mely = [0] * n

while bejar:
    akt = heapq.heappop(bejar)[1]

    if bejart[akt]:
        continue

    #print(akt);

    bejart[akt] = True

    for i in range(len(csucsok[akt])):
        kovi = csucsok[akt][i]
        suly = hossz[akt][i]

        if bejart[kovi]:
            continue

        for j in range(1, n + 1):
            if opciok[akt][j] == -1:
                continue

            tav = opciok[akt][j] + suly * int(1 << (j - 1))

            if(opciok[kovi][j + 1]) == -1:
                opciok[kovi][j + 1] = tav;
            else:
                opciok[kovi][j + 1] = int(min(int(opciok[kovi][j + 1]), int(tav)))

            if ans[kovi] > tav or ans[kovi] == -1:
                mely[kovi] = j + 1
                ans[kovi] = int(tav);
            

        heapq.heappush(bejar, (int(ans[kovi]), kovi))

for i in range(1, n):
    print(ans[i] % MOD)
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted78ms24228 KiB
2Runtime error782ms131072 KiB
subtask20/8
3Accepted370ms98404 KiB
4Accepted351ms104912 KiB
5Runtime error527ms131072 KiB
6Accepted312ms98484 KiB
7Runtime error344ms131072 KiB
subtask315/15
8Accepted86ms23732 KiB
9Accepted79ms23920 KiB
10Accepted87ms23712 KiB
11Accepted79ms24052 KiB
12Accepted89ms23708 KiB
13Accepted89ms23868 KiB
14Accepted81ms23864 KiB
15Accepted81ms23736 KiB
16Accepted87ms23732 KiB
17Accepted79ms23736 KiB
18Accepted86ms23840 KiB
subtask40/34
19Accepted451ms100160 KiB
20Runtime error643ms131072 KiB
21Runtime error621ms131072 KiB
22Accepted442ms99176 KiB
23Accepted430ms99044 KiB
24Runtime error635ms131072 KiB
25Accepted446ms99560 KiB
26Accepted507ms100144 KiB
27Runtime error504ms131072 KiB
28Runtime error458ms131072 KiB
29Runtime error492ms131072 KiB
30Accepted497ms131008 KiB
31Accepted556ms130280 KiB
32Runtime error600ms131072 KiB
33Runtime error601ms131072 KiB
subtask50/21
34Accepted155ms28708 KiB
35Wrong answer296ms31712 KiB
36Wrong answer195ms27300 KiB
37Wrong answer201ms28120 KiB
38Accepted189ms27620 KiB
39Accepted200ms27772 KiB
40Accepted407ms42904 KiB
41Accepted377ms41448 KiB
42Accepted119ms27632 KiB
43Accepted127ms27644 KiB
44Accepted115ms27880 KiB
45Accepted129ms27836 KiB
46Accepted134ms27624 KiB
47Accepted115ms26936 KiB
48Accepted152ms27628 KiB
49Accepted166ms28012 KiB
subtask60/22
50Runtime error522ms131072 KiB
51Runtime error623ms131072 KiB
52Wrong answer446ms99460 KiB
53Wrong answer407ms99508 KiB
54Accepted407ms99808 KiB
55Accepted442ms99048 KiB
56Runtime error513ms131072 KiB
57Runtime error583ms131072 KiB
58Accepted163ms40596 KiB
59Runtime error467ms131072 KiB
60Runtime error472ms131072 KiB
61Runtime error490ms131072 KiB
62Runtime error503ms131072 KiB
63Runtime error560ms131072 KiB
64Runtime error593ms131072 KiB
65Runtime error584ms131072 KiB
66Runtime error593ms131072 KiB