본문 바로가기
반응형

다익스트라3

[알고리즘] 미로 만들기 포인트 미로를 만드는 만드는 방법? 벽을 몇개를 부수고 들어가야 하는 가? 를 묻는 문제 입니다. 저는 이를 다익스트라 알고리즘 (이진 힙) 을 적용하여 해결하였습니다. 다익스트라 알고리즘은 시간 복잡도 O(E + VlogV) 가집니다. 🧶문서는 항상 수정될 수 있습니다. 비판은 환영합니다. python import heapq n = int(input()) data = [list(input()) for _ in range(n)] q = [] distance = [[987654321] * n for _ in range(n)] distance[0][0] = 0 q.append((0, 0, 0)) dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] while q: cost, x, y = hea.. 2021. 6. 16.
[알고리즘] 가장 먼 노드 포인트 1. 가장 먼 노드 의미는 무엇인가? 어떻게 보면 2가지로 해석을 할 수 있다. 1. BFS를 해서 제일 마지막 거리에 있는 노드들 2. 다익스트라 알고리즘을 써서 최단 거리가 max 인 것들의 노드들 2. 따라서 2가지 방법으로 풀 수 있습니다. 🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다. BFS #include #include #include #include #include using namespace std; vector map[20010]; int dist[20010]; int bfs() { memset(dist, -1, sizeof (dist)); int max_value = 0; queue q; q.push ({ 1, 0 }); dist[1] = 0; //거리를 이용하여 b.. 2021. 3. 9.
[알고리즘] 최단 경로(다익스트라), MST (프림) 포인트 1. 다익스트라 알고리즘과 프림 알고리즘은 거의 차이가 없다. 다익스트라는 값을 계속해서 더해서 나간다고 생각을 하면 된다. 다익스트라 #include #include #include using namespace std; vector map[101]; vector dijkstra(int start, int goal) { vector dist (goal, 9876554321); dist[start]=0; priority_queue pq; pq.push ({ 0, start }); while(!pq.empty()) { int x, cost; tie (cost, x)=pq.top (); pq.pop (); if (dist[x] < cost) continue; for(auto ele : map[x]) {.. 2020. 10. 22.
반응형