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 |
|
|
| 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 |