提出 #6339072


ソースコード 拡げる

import sys
input = sys.stdin.readline
from collections import defaultdict

"""
(駅、会社)を頂点にグラフを持つ。頂点数O(M)。
そのまま辺を貼ると辺が多くなりすぎる。
(駅、会社) -> (駅、無属性) -> (駅、会社)
"""

L = 32
mask = (1 << L) - 1
N,M = map(int,input().split())
graph = defaultdict(list)
for _ in range(M):
    p,q,c = map(int,input().split())
    p <<= L
    q <<= L
    graph[p].append(p+c)
    graph[p+c].append(p)
    graph[q].append(q+c)
    graph[q+c].append(q)
    graph[p+c].append(q+c)
    graph[q+c].append(p+c)

INF = 10 ** 9
dist = defaultdict(lambda: INF)

start = 1 << L
goal = N << L

q = [start] # 0 が会社に属していない状態
dist[start] = 0
d = 0
q0 = []
q1 = []
while q:
    for x in q:
        if x & mask == 0:
            for y in graph[x]:
                if dist[y] <= d + 1:
                    continue
                dist[y] = d + 1
                q1.append(y)
        else:
            for y in graph[x]:
                if dist[y] <= d:
                    continue
                dist[y] = d
                q0.append(y)
    if q0:
        q = q0
        q0 = []
        continue
    q = q1
    q1 = []
    d += 1

answer = dist[goal]
if answer == INF:
    answer = -1
print(answer)

提出情報

提出日時
問題 E - すぬけ君の地下鉄旅行
ユーザ maspy
言語 Python (3.4.3)
得点 600
コード長 1342 Byte
結果 AC
実行時間 2693 ms
メモリ 196696 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 600 / 600
結果 AC
AC × 59
セット名 テストケース
Sample
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, sample_01.txt, sample_02.txt, sample_03.txt, w1.txt, w10.txt, w11.txt, w12.txt, w13.txt, w14.txt, w15.txt, w16.txt, w17.txt, w18.txt, w2.txt, w3.txt, w4.txt, w5.txt, w6.txt, w7.txt, w8.txt, w9.txt
ケース名 結果 実行時間 メモリ
01.txt AC 22 ms 3444 KiB
02.txt AC 1790 ms 96380 KiB
03.txt AC 2693 ms 196652 KiB
04.txt AC 1785 ms 147104 KiB
05.txt AC 2427 ms 178828 KiB
06.txt AC 1248 ms 106160 KiB
07.txt AC 1242 ms 105316 KiB
08.txt AC 2553 ms 196696 KiB
09.txt AC 1335 ms 110856 KiB
10.txt AC 1312 ms 110800 KiB
11.txt AC 1748 ms 126328 KiB
12.txt AC 993 ms 62140 KiB
13.txt AC 1322 ms 91252 KiB
14.txt AC 1679 ms 124816 KiB
15.txt AC 1501 ms 98276 KiB
16.txt AC 1621 ms 122060 KiB
17.txt AC 1751 ms 127436 KiB
18.txt AC 1108 ms 70156 KiB
19.txt AC 1641 ms 122800 KiB
20.txt AC 1764 ms 129772 KiB
21.txt AC 2481 ms 195288 KiB
22.txt AC 1952 ms 132544 KiB
23.txt AC 2091 ms 139776 KiB
24.txt AC 1718 ms 128716 KiB
25.txt AC 972 ms 61808 KiB
26.txt AC 1289 ms 90892 KiB
27.txt AC 1791 ms 132080 KiB
28.txt AC 1655 ms 129576 KiB
29.txt AC 1715 ms 130864 KiB
30.txt AC 1654 ms 127120 KiB
31.txt AC 1322 ms 91144 KiB
32.txt AC 1565 ms 121968 KiB
33.txt AC 1705 ms 131640 KiB
34.txt AC 1496 ms 98704 KiB
35.txt AC 932 ms 61708 KiB
36.txt AC 1151 ms 71172 KiB
37.txt AC 1682 ms 118376 KiB
38.txt AC 1503 ms 98632 KiB
sample_01.txt AC 21 ms 3316 KiB
sample_02.txt AC 21 ms 3316 KiB
sample_03.txt AC 20 ms 3316 KiB
w1.txt AC 1760 ms 124704 KiB
w10.txt AC 1725 ms 154784 KiB
w11.txt AC 1002 ms 62864 KiB
w12.txt AC 1210 ms 68676 KiB
w13.txt AC 1598 ms 120708 KiB
w14.txt AC 2118 ms 165168 KiB
w15.txt AC 977 ms 62744 KiB
w16.txt AC 980 ms 63108 KiB
w17.txt AC 1016 ms 64672 KiB
w18.txt AC 1375 ms 93880 KiB
w2.txt AC 1689 ms 123740 KiB
w3.txt AC 1956 ms 131800 KiB
w4.txt AC 1596 ms 122236 KiB
w5.txt AC 2505 ms 196252 KiB
w6.txt AC 2317 ms 181072 KiB
w7.txt AC 2153 ms 187380 KiB
w8.txt AC 2060 ms 187852 KiB
w9.txt AC 2164 ms 193188 KiB