diff --git a/week6/[BOJ] 11657 copy.py b/week6/[BOJ] 11657 copy.py new file mode 100644 index 0000000..bdf70bc --- /dev/null +++ b/week6/[BOJ] 11657 copy.py @@ -0,0 +1,27 @@ +import sys + +N, M = map(int, sys.stdin.readline().split()) + +road = [] +for _ in range(M): + A, B, C = map(int, sys.stdin.readline().split()) + road.append((A - 1, B - 1, C)) + +res = [int(1e9) for _ in range(N)] +temp = [0 for _ in range(N)] +res[0] = 0 +cycle = False + +for i in range(N): + for j in range(M): + c, n, d = road[j] + if res[c] != int(1e9) and res[n] > res[c] + d: + res[n] = res[c] + d + if i == N - 1: + cycle = True + +if cycle: + print(-1) +else: + for i in range(1, N): + print(res[i] if res[i] != int(1e9) else -1) \ No newline at end of file diff --git a/week6/[BOJ] 4485.py b/week6/[BOJ] 4485.py new file mode 100644 index 0000000..63262c4 --- /dev/null +++ b/week6/[BOJ] 4485.py @@ -0,0 +1,35 @@ +import heapq + +question_num = 1 +dx = [0, 0, 1, -1] +dy = [1, -1, 0, 0] + +def solve(cave, n): + distance = [[int(1e9)] * n for _ in range(n)] + x, y = 0, 0 + queue = [(cave[x][y], x, y)] + distance[x][y] = cave[x][y] + + while queue: + dist, x, y = heapq.heappop(queue) + if distance[x][y] < dist: + continue + for i in range(4): + nx, ny = x + dx[i], y + dy[i] + if nx < 0 or ny < 0 or nx >= n or ny >= n: + continue + cost = dist + cave[nx][ny] + if cost < distance[nx][ny]: + distance[nx][ny] = cost + heapq.heappush(queue, (cost, nx, ny)) + + return distance[n-1][n-1] + +while True: + n = int(input()) + if n == 0: + break + cave = [list(map(int, input().split())) for _ in range(n)] + + print(f"Problem {question_num}: {solve(cave, n)}") + question_num += 1 \ No newline at end of file diff --git a/week6/[PRGMS] 49191.py b/week6/[PRGMS] 49191.py new file mode 100644 index 0000000..f5ea288 --- /dev/null +++ b/week6/[PRGMS] 49191.py @@ -0,0 +1,22 @@ +def solution(n, results): + answer = 0 + battle_graph = [[0] * n for _ in range(n)] + + for result in results: + battle_graph[result[0] - 1][result[1] - 1] = 1 + battle_graph[result[1] - 1][result[0] - 1] = -1 + + for i in range(n): + for j in range(n): + for k in range(n): + if j == k or battle_graph[j][k] in [1,-1]: + continue + if battle_graph[j][i] == battle_graph[i][k] == 1: + battle_graph[j][k] = 1 + battle_graph[k][j] = battle_graph[i][j] = battle_graph[k][i] = -1 + + for battle in battle_graph: + if battle.count(0) == 1: + answer += 1 + + return answer \ No newline at end of file