Skip to content

Commit 652d569

Browse files
Merge pull request #697 from baekhangyeol/main
[백한결] 106차 라이브 코테 제출
2 parents 9362ca7 + 37e864e commit 652d569

File tree

4 files changed

+115
-0
lines changed

4 files changed

+115
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import sys
2+
from collections import defaultdict, deque
3+
4+
def main():
5+
input = sys.stdin.readline
6+
7+
N, M, K, X = map(int, input().split())
8+
graph = defaultdict(list)
9+
10+
for _ in range(M):
11+
A, B = map(int, input().split())
12+
graph[A].append(B)
13+
14+
distance = [-1] * (N + 1)
15+
distance[X] = 0
16+
17+
queue = deque([X])
18+
19+
while queue:
20+
current = queue.popleft()
21+
22+
for neighbor in graph[current]:
23+
if distance[neighbor] == -1:
24+
distance[neighbor] = distance[current] + 1
25+
queue.append(neighbor)
26+
27+
result = [i for i in range(1, N + 1) if distance[i] == K]
28+
29+
if result:
30+
for city in sorted(result):
31+
print(city)
32+
else:
33+
print(-1)
34+
35+
if __name__ == "__main__":
36+
main()
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
def main():
2+
n = int(input())
3+
m = int(input())
4+
5+
cityMap = [[float('inf')] * n for _ in range(n)]
6+
7+
for i in range(n):
8+
cityMap[i][i] = 0
9+
10+
for _ in range(m):
11+
a, b, c = map(int, input().strip().split())
12+
cityMap[a-1][b-1] = min(c, cityMap[a-1][b-1])
13+
14+
15+
for i in range(0, n):
16+
for j in range(0, n):
17+
for k in range(0, n):
18+
cityMap[j][k] = min(cityMap[j][k], cityMap[j][i] + cityMap[i][k])
19+
20+
for row in cityMap:
21+
print(' '.join(str(x if x != float('inf') else 0) for x in row))
22+
23+
if __name__ == "__main__":
24+
main()
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import heapq
2+
from collections import defaultdict
3+
4+
def main():
5+
n, m = map(int, input().split())
6+
7+
cityMap = defaultdict(list)
8+
9+
for _ in range(m):
10+
a, b, c = map(int, input().split())
11+
cityMap[a].append((b, c))
12+
cityMap[b].append((a, c))
13+
14+
dist = [float('inf')] * (n + 1)
15+
dist[1] = 0
16+
17+
pq = []
18+
heapq.heappush(pq, (0, 1))
19+
20+
while pq:
21+
cost, now = heapq.heappop(pq)
22+
23+
if dist[now] < cost:
24+
continue
25+
26+
for next_node, weight in cityMap[now]:
27+
new_cost = cost + weight
28+
if new_cost < dist[next_node]:
29+
dist[next_node] = new_cost
30+
heapq.heappush(pq, (new_cost, next_node))
31+
32+
print(dist[n])
33+
34+
if __name__ == "__main__":
35+
main()
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
def solution(m, n, puddles):
2+
dp = [[0] * (m + 1) for _ in range(n + 1)]
3+
4+
dp[1][1] = 1
5+
6+
puddleSet = set()
7+
8+
for puddle in puddles:
9+
puddleSet.add(tuple(puddle))
10+
11+
for i in range(1, n + 1):
12+
for j in range(1, m + 1):
13+
if (j, i) in puddleSet:
14+
dp[i][j] = 0
15+
elif i == 1 and j == 1:
16+
continue
17+
else:
18+
dp[i][j] = (dp[i - 1][j] + dp[i][j - 1]) % 1000000007
19+
20+
return dp[n][m]

0 commit comments

Comments
 (0)