Skip to content

Commit 6b1d229

Browse files
committed
105차 1번 문제 다시 풀이
1 parent 9bb5c65 commit 6b1d229

1 file changed

Lines changed: 21 additions & 24 deletions

File tree

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,32 @@
11
import sys
2+
from collections import *
23

34
input = sys.stdin.readline
45

56

67
# 도시 개수, 도로 개수, 거리 정보, 출발 도시
78
n, m, k, x = map(int, input().split())
8-
distance = [[float('inf')] * (n + 1) for _ in range(n + 1)]
9+
graph = [[] for _ in range(n + 1)]
910

1011
for _ in range(m):
1112
a, b = map(int, input().split())
12-
distance[a][b] = 1
13-
14-
for mid in range(n + 1):
15-
for i in range(n + 1):
16-
for j in range(n + 1):
17-
if i == j: continue
18-
if distance[i][mid] != float('inf') and distance[mid][j] != float('inf'):
19-
distance[i][j] = min(distance[i][j], distance[i][mid] + distance[mid][j])
20-
21-
print(distance[x])
22-
if k not in distance[x]:
13+
graph[a].append(b)
14+
15+
visited = [0] * (n + 1)
16+
visited[x] = 1
17+
result = []
18+
q = deque(([(x, 0)]))
19+
while q:
20+
x, cnt = q.popleft()
21+
if cnt == k:
22+
result.append(x)
23+
for nei in graph[x]:
24+
if not visited[nei]:
25+
visited[nei] = 1
26+
q.append((nei, cnt + 1))
27+
28+
if not result:
2329
print(-1)
24-
for dist in distance[x]:
25-
if dist == k:
26-
print(distance[x].index(dist))
27-
28-
29-
"""
30-
4 4 2 1
31-
1 2
32-
1 3
33-
2 3
34-
2 4
35-
"""
30+
else:
31+
for res in sorted(result):
32+
print(res)

0 commit comments

Comments
 (0)