Algorithm/Dijkstra 14

[Python] 백준 13549번 숨바꼭질

문제 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 입력 예제 5 17 출력 예제 2 문제 풀이 수빈이가 있는 곳에서 순간이동 가능한 모든 거리까지 도달하는데 걸리는 시간을 탐색한 후, 동생이 있는 곳의 좌표 값을 리턴 순간이동 할 때 (x + 1), (x - 1)의 값은 1이고, (x * 2)의 값은 0이므로, 이동좌표를..

Algorithm/Dijkstra 2023.03.15

[Python] 백준 1753번 최단경로

문제 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 입력 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 ..

Algorithm/Dijkstra 2023.03.14

[Python] 백준 18352번 특정 거리의 도시찾기

문제 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 입력 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개의 자연수 A, B가 공백을 기준으로 구분되어 주어진다. 이는 A번 도시에서 B번 도시로 이동하는 단방향 도로가 존재한다는 의미다. ..

Algorithm/Dijkstra 2023.03.14

다익스트라 알고리즘 구현

구현 방법 출발 노드 설정 최단 거리 테이블 초기화 방문하지 않은 노드 중 최단 거리가 가장 짧은 노드 선택 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신 3, 4 번 과정 반복 -> 그리디 알고리즘 + 다이나믹 프로그래밍 코드 (우선순위큐 사용X) import sys input = sys.stdin.readline # 노드, 간선 n, m = map(int,input().split()) # 시작노드 start = int(input()) INF = int(1e9) graph = [[] for _ in range(n + 1)] visited = [False] * (n + 1) distance = [INF] * (n + 1) # 모든 간선 입력 for _ in range(m):..

Algorithm/Dijkstra 2023.03.08