2019.03.13) 백준 최단경로 특집 2편 - 11404, 1916(PyPy3)
2019. 3. 13. 15:26ㆍ프로그래밍(주력)/백준 문제풀이
하나는 dp로 풀엇는데 됬고
아래꺼는 우선순위 큐를 사용하니 쉽게 통과
11404번
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | n = int(input()) m = int(input()) INF = 1e9 # 그래프 graph = {i: {j: INF for j in range(1, n + 1)} for i in range(1, n + 1)} for _ in range(m): a, b, c = map(int, input().split(' ')) # 똑같은 간선인 길이가 더 길어버리기~ if graph[a].get(b, False): graph[a][b] = min(graph[a][b], c) else: graph[a][b] = c # 3중 반복문으로 간선 체크 for k in range(1, n + 1): for i in range(1, n + 1): for j in range(1, n + 1): graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j]) for i in range(1, n + 1): for j in range(1, n + 1): # 만약 자신이면 0 if i == j: print(0, end=' ') else: print(graph[i][j] if graph[i][j] != INF else 0, end=' ') print() | cs |
1926번
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | n = int(input()) m = int(input()) INF = 1e9 # 그래프 graph = {i: {j: INF for j in range(1, n + 1)} for i in range(1, n + 1)} for _ in range(m): a, b, c = map(int, input().split(' ')) # 똑같은 간선인 길이가 더 길어버리기~ if graph[a].get(b, False): graph[a][b] = min(graph[a][b], c) else: graph[a][b] = c # 3중 반복문으로 간선 체크 for k in range(1, n + 1): for i in range(1, n + 1): for j in range(1, n + 1): graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j]) for i in range(1, n + 1): for j in range(1, n + 1): # 만약 자신이면 0 if i == j: print(0, end=' ') else: print(graph[i][j] if graph[i][j] != INF else 0, end=' ') print() | cs |
'프로그래밍(주력) > 백준 문제풀이' 카테고리의 다른 글
2019.03.15) 백준 최단경로 특집 4편 - 1238, 1389, 11403(PyPy3) (0) | 2019.03.15 |
---|---|
2019.03.14) 백준 최단경로 특집 3편 - 1504, 2606(PyPy3) (0) | 2019.03.14 |
2019.03.12) 백준 최단경로 특집 1편 - 1753(PyPy3) (0) | 2019.03.12 |
2019.03.11) 백준 dfs 특집 3편 - 11724, 2468(PyPy3) (0) | 2019.03.11 |
2019.03.10) 백준 이진탐색 마지막 - 1920 (PyPy3) (0) | 2019.03.10 |