Skip to content

Commit 7a6e4e3

Browse files
authored
Merge pull request #134 from YoonYn9915/main
YoonYn9915 /1월 5주차/3문제
2 parents dd74638 + 9cb11b9 commit 7a6e4e3

File tree

3 files changed

+92
-0
lines changed

3 files changed

+92
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
n = int(input())
2+
friends = [list(input()) for _ in range(n)]
3+
4+
connected = [[0] * n for _ in range(n)]
5+
6+
for k in range(n):
7+
for i in range(n):
8+
for j in range(n):
9+
if i == j:
10+
continue
11+
if friends[i][j] == "Y" or (friends[i][k] == "Y" and friends[k][j] == "Y"):
12+
connected[i][j] = 1
13+
14+
answer = 0
15+
for row in connected:
16+
answer = max(answer, sum(row))
17+
print(answer)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import heapq
2+
3+
def dijkstra(s):
4+
D = [float('inf')] * (N+1)
5+
D[s] = 0
6+
q = []
7+
heapq.heappush(q, (0, s))
8+
while q:
9+
dist, now = heapq.heappop(q)
10+
if D[now] >= dist:
11+
for v, val in city[now]:
12+
if dist + val < D[v]:
13+
D[v] = dist + val
14+
heapq.heappush(q, (dist + val, v))
15+
return D
16+
17+
N, M, X = map(int, input().split())
18+
city = [[] for _ in range(N+1)]
19+
for _ in range(M):
20+
a, b, t = map(int, input().split())
21+
city[a].append([b, t])
22+
ans = dijkstra(X)
23+
ans[0] = 0
24+
for i in range(1, N+1):
25+
if i != X:
26+
res = dijkstra(i)
27+
ans[i] += res[X]
28+
29+
print(max(ans))
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import sys
2+
input = sys.stdin.readline
3+
import heapq
4+
dx = [-1, 0 ,1 ,0]
5+
dy = [0, 1, 0, -1]
6+
inf = int(1e9)
7+
8+
def dijkstra(t, graph, dist):
9+
que = []
10+
dist[0][0] = graph[0][0]
11+
12+
heapq.heappush(que, (dist[0][0], 0, 0))
13+
14+
while que:
15+
cost, x, y = heapq.heappop(que)
16+
17+
if dist[x][y] < cost:
18+
continue
19+
20+
for i in range(4):
21+
nx = dx[i] + x
22+
ny = dy[i] + y
23+
if n > nx >= 0 and n > ny >= 0 :
24+
temp = cost + graph[nx][ny]
25+
if temp < dist[nx][ny]:
26+
dist[nx][ny] = temp
27+
heapq.heappush(que, (temp, nx, ny))
28+
29+
print('Problem {}: {}'.format(t, dist[n - 1][n - 1]))
30+
31+
32+
t = 1
33+
34+
while 1:
35+
n = int(input())
36+
graph = []
37+
if not n:
38+
break
39+
40+
for i in range(n):
41+
graph.append(list(map(int, input().split())))
42+
43+
dist = [[inf for i in range(n)] for j in range(n)]
44+
dijkstra(t, graph, dist)
45+
46+
t += 1

0 commit comments

Comments
 (0)