Submission #61756651


Source Code Expand

import sys
from collections import deque

input = sys.stdin.readline
n, m, s, t = map(int, input().split())
s, t = s - 1, t - 1
g = [[] for _ in range(n)]
for i in range(m):
    u, v = map(int, input().split())
    u, v = u - 1, v - 1
    g[u].append((v, i))
    g[v].append((u, i))
inf = 10**9
dist = [inf] * n
dist[s] = 0
q = deque()
q.append(s)
while q:
    x = q.popleft()
    for i, idx in g[x]:
        if dist[i] != inf:
            continue
        dist[i] = dist[x] + 1
        q.append(i)
visited = [False] * n
visited[t] = True
cnt = [0] * n
cnt[t] = 1
q.append(t)
ciritical_vertex = []
ciritical_path = [False] * m
while q:
    x = q.popleft()
    for i, idx in g[x]:
        if dist[i] + 1 != dist[x]:
            continue
        ciritical_path[idx] = True
        if i != s:
            ciritical_vertex.append(i)
        if not visited[i]:
            visited[i] = True
            q.append(i)
        cnt[i] = min(2, cnt[i] + cnt[x])
if cnt[s] == 2:
    print(2 * dist[t])
    exit()
d = [inf] * (2 * n)
d[s] = 0
q.append(s)
while q:
    xx = q.popleft()
    x = xx
    c = x >= n
    if c:
        x -= n
    for i, idx in g[x]:
        to = i
        if c or not ciritical_path[idx]:
            to += n
        if d[to] != inf:
            continue
        d[to] = d[xx] + 1
        q.append(to)
if d[t + n] == dist[t] + 1:
    print(2 * dist[t] + 1)
    exit()
for x in ciritical_vertex:
    if len(g[x]) >= 3:
        print(2 * dist[t] + 2)
        exit()
d2 = [inf] * n
for i in range(n):
    if len(g[i]) >= 3:
        d2[i] = 0
        q.append(i)
while q:
    x = q.popleft()
    for i, idx in g[x]:
        if d2[i] != inf:
            continue
        d2[i] = d2[x] + 1
        q.append(i)
ans = 2 * dist[t] + 4 * min(d2[s], d2[t]) + 4
gg = [[] for _ in range(n)]
for i in range(n):
    for x, idx in g[i]:
        if not ciritical_path[idx]:
            gg[i].append(x)
d3 = [inf] * n
d3[s] = 0
q.append(s)
while q:
    x = q.popleft()
    for i in gg[x]:
        if d3[i] != inf:
            continue
        d3[i] = d3[x] + 1
        q.append(i)
ans = min(ans, dist[t] + d3[t])
print(-1 if ans >= inf else ans)

Submission Info

Submission Time
Task D - Moving Pieces on Graph
User sounansya
Language Python (PyPy 3.10-v7.3.12)
Score 700
Code Size 2240 Byte
Status AC
Exec Time 748 ms
Memory 171648 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 3
AC × 64
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 01_handmade_06.txt, 02_line_00.txt, 02_line_01.txt, 02_line_02.txt, 03_line_like_00.txt, 03_line_like_01.txt, 03_line_like_02.txt, 03_line_like_03.txt, 03_line_like_04.txt, 03_line_like_05.txt, 03_line_like_06.txt, 03_line_like_07.txt, 03_line_like_08.txt, 03_line_like_09.txt, 03_line_like_10.txt, 03_line_like_11.txt, 03_line_like_12.txt, 03_line_like_13.txt, 03_line_like_14.txt, 03_line_like_15.txt, 03_line_like_16.txt, 03_line_like_17.txt, 03_line_like_18.txt, 03_line_like_19.txt, 03_line_like_20.txt, 03_line_like_21.txt, 03_line_like_22.txt, 03_line_like_23.txt, 04_circle_like_00.txt, 04_circle_like_01.txt, 04_circle_like_02.txt, 04_circle_like_03.txt, 04_circle_like_04.txt, 04_circle_like_05.txt, 04_circle_like_06.txt, 04_circle_like_07.txt, 04_circle_like_08.txt, 04_circle_like_09.txt, 05_dense_00.txt, 05_dense_01.txt, 05_dense_02.txt, 06_random_00.txt, 06_random_01.txt, 06_random_02.txt, 06_random_03.txt, 06_random_04.txt, 06_random_05.txt, 06_random_06.txt, 06_random_07.txt, 06_random_08.txt, 06_random_09.txt, 07_uni_00.txt, 07_uni_01.txt, 07_uni_02.txt, 07_uni_03.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 73 ms 76716 KiB
00_sample_01.txt AC 73 ms 76932 KiB
00_sample_02.txt AC 73 ms 77008 KiB
01_handmade_00.txt AC 73 ms 76928 KiB
01_handmade_01.txt AC 74 ms 77068 KiB
01_handmade_02.txt AC 73 ms 76704 KiB
01_handmade_03.txt AC 73 ms 77136 KiB
01_handmade_04.txt AC 73 ms 76944 KiB
01_handmade_05.txt AC 483 ms 121380 KiB
01_handmade_06.txt AC 552 ms 134060 KiB
02_line_00.txt AC 116 ms 85152 KiB
02_line_01.txt AC 627 ms 147748 KiB
02_line_02.txt AC 677 ms 144880 KiB
03_line_like_00.txt AC 660 ms 138272 KiB
03_line_like_01.txt AC 748 ms 137916 KiB
03_line_like_02.txt AC 401 ms 116128 KiB
03_line_like_03.txt AC 455 ms 124740 KiB
03_line_like_04.txt AC 266 ms 106304 KiB
03_line_like_05.txt AC 606 ms 153800 KiB
03_line_like_06.txt AC 358 ms 118736 KiB
03_line_like_07.txt AC 656 ms 159512 KiB
03_line_like_08.txt AC 472 ms 126088 KiB
03_line_like_09.txt AC 457 ms 117496 KiB
03_line_like_10.txt AC 284 ms 108128 KiB
03_line_like_11.txt AC 554 ms 130824 KiB
03_line_like_12.txt AC 451 ms 126204 KiB
03_line_like_13.txt AC 516 ms 129360 KiB
03_line_like_14.txt AC 533 ms 128344 KiB
03_line_like_15.txt AC 293 ms 106560 KiB
03_line_like_16.txt AC 448 ms 129604 KiB
03_line_like_17.txt AC 648 ms 139452 KiB
03_line_like_18.txt AC 90 ms 83676 KiB
03_line_like_19.txt AC 88 ms 83424 KiB
03_line_like_20.txt AC 76 ms 76928 KiB
03_line_like_21.txt AC 76 ms 76600 KiB
03_line_like_22.txt AC 89 ms 83828 KiB
03_line_like_23.txt AC 88 ms 83764 KiB
04_circle_like_00.txt AC 670 ms 140072 KiB
04_circle_like_01.txt AC 580 ms 133732 KiB
04_circle_like_02.txt AC 632 ms 137032 KiB
04_circle_like_03.txt AC 486 ms 135476 KiB
04_circle_like_04.txt AC 570 ms 133548 KiB
04_circle_like_05.txt AC 200 ms 94948 KiB
04_circle_like_06.txt AC 202 ms 94948 KiB
04_circle_like_07.txt AC 204 ms 94780 KiB
04_circle_like_08.txt AC 200 ms 95220 KiB
04_circle_like_09.txt AC 200 ms 94676 KiB
05_dense_00.txt AC 149 ms 103308 KiB
05_dense_01.txt AC 93 ms 84116 KiB
05_dense_02.txt AC 113 ms 87952 KiB
06_random_00.txt AC 309 ms 105644 KiB
06_random_01.txt AC 315 ms 108368 KiB
06_random_02.txt AC 423 ms 121692 KiB
06_random_03.txt AC 410 ms 115808 KiB
06_random_04.txt AC 326 ms 108880 KiB
06_random_05.txt AC 438 ms 122520 KiB
06_random_06.txt AC 328 ms 108904 KiB
06_random_07.txt AC 417 ms 120892 KiB
06_random_08.txt AC 431 ms 121812 KiB
06_random_09.txt AC 446 ms 124704 KiB
07_uni_00.txt AC 215 ms 112348 KiB
07_uni_01.txt AC 154 ms 96692 KiB
07_uni_02.txt AC 302 ms 129516 KiB
07_uni_03.txt AC 446 ms 171648 KiB