/images/logo.png

[백준]11404 웜홀

https://www.acmicpc.net/problem/11404 풀이: [C++]플로이드-와샬 알고리즘(Bellman-Ford Algorithm) 참고 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <iostream>#include <algorithm>using namespace std; int n, m, i, a1, a2, a3, a[102][102]; int main() { cin >> n >> m; fill(a[0], a[0] + 10404, 987654321); for (i = 0; i < m; i++) { cin >> a1 >> a2 >> a3; a[a1][a2] = min(a[a1][a2], a3); } for (i = 1; i <= n; i++) for (int t = 1; t <= n; t++) for (int y = 1; y <= n; y++) if (t == y) a[t][y] = 0; else a[t][y] = min(a[t][y], a[t][i] + a[i][y]); for (i = 1; i <= n; i++) { for (int t = 1; t <= n; t++) if (a[i][t] == 987654321) cout << "0 "; else cout << a[i][t] << " "; cout << endl; } }

[백준]1865 웜홀

https://www.acmicpc.net/problem/1865 풀이: [C++]벨만-포드 알고리즘(Bellman-Ford Algorithm) 참고 벨만-포드 알고리즘으로 모든 정점을 순환 한 뒤, 음수 사이클이 있는지 판단 후 있다면, “YES” 를 없다면 “NO"를 출력한다. 코드: 사용언어 : c++ 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 #include <iostream>#include <vector>using namespace std; int T, n, m, k, i, d[502], a1, a2, a3; int main() { cin >> T; while (T--) { bool b = true; cin >> n >> m >> k; vector<pair<pair<int, int>, int>> a; for (i = 0; i < m; i++) { cin >> a1 >> a2 >> a3; a.

[백준]11657 타임머신

https://www.acmicpc.net/problem/11657 풀이: [C++]벨만-포드 알고리즘(Bellman-Ford Algorithm) 참고 코드: 사용언어 : c++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include <iostream>using namespace std; #define INF 987654321 int n, m, i, d[502], a1, a2, a3; pair<pair<int, int>, int> a[6002]; int main() { cin >> n >> m; for (i = 0; i < m; i++) cin >> a[i].

[백준]9370 미확인 도착지

https://www.acmicpc.net/problem/9370 풀이: [C++]다익스트라 알고리즘(Dijkstra Algorithm) 참고 s -> g -> h -> x s -> h -> g -> x 두 가지 경로가 있는데, 둘 중 하나라도 최단 경로일 경우 x를 배열에 저장한다. 저장된 x를 오름차순으로 출력한다. 코드: 사용언어 : c++ 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 #include <iostream>#include <vector>#include <queue>using namespace std; int T, n, m, t, u, v, w, i, s, g, h, v1, v2, a1, c, d[2002]; bool b[2002]; priority_queue<pair<int, int>> p; priority_queue<int, vector<int>, greater<int>> q; int main() { cin >> T; while (T--) { cin >> n >> m >> t; vector<vector<pair<int, int>>> a(n + 1); cin >> s >> g >> h; for (i = 0; i < m; i++) { cin >> u >> v >> w; a[u].

[백준]1504 최단 경로

https://www.acmicpc.net/problem/1504 풀이: [C++]다익스트라 알고리즘(Dijkstra Algorithm) 참고 지나야 하는 두 개의 정점을 v1, v2 라고 할때, 1 ~ v1 ~ v2 ~ N 1 ~ v2 ~ v1 ~ N 으로 나눠서 풀어본다. 1~v1, v2 과 v1 ~ v2 과 v1, v2 ~ N 을 다익스트라 알고리즘으로 각각 구하여 더한값이 최소인 값을 구한다. 만약 경로가 없다면 -1을 출력한다. 코드: 사용언어 : c++ 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 #include <iostream>#include <vector>#include <queue>using namespace std; int V, E, u, v, w, i, d[805], v1, v2, a1, a2; priority_queue<pair<int, int>> p; bool b[805]; int main() { cin >> V >> E; vector<vector<pair<int, int>>>a(V + 1); for (i = 0; i < E; i++) { cin >> u >> v >> w; a[u].

[백준]1753 최단 경로

https://www.acmicpc.net/problem/1753 풀이: [C++]다익스트라 알고리즘(Dijkstra Algorithm) 참고 코드: 사용언어 : c++ 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 34 35 36 #include <iostream>#include <vector>#include <queue>using namespace std; int V, E, k, u, v, w, i; vector<int> d; priority_queue<pair<int, int>> p; bool b[20002]; int main() { cin >> V >> E >> k; vector<vector<pair<int, int>>>a(V + 1); for (i = 0; i <= V; i++) d.