์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋ถํ ์ ๋ณต
- ๊ตฌํ
- JPA
- thymeleaf
- web
- ๋ฌธ์์ด
- java
- c++
- OS
- dfs
- error
- ๋์ ํฉ
- DP
- ๊ทธ๋ฆฌ๋
- ์์ ์ ๋ ฌ
- ์คํ
- ๋ฐฑํธ๋ํน
- ์๋ฎฌ๋ ์ด์
- ์ฌ๊ท
- ์ต๋จ ๊ฒฝ๋ก
- ๋ฐ์ดํฌ์คํธ๋ผ
- CVE
- BFS
- dynamic debugging
- ์ฐ์ ์์ ํ
- ๋งต
- Spring
- Reversing
- GCP
- ์ด๋ถ ํ์
- Today
- Total
hades
[Baekjoon] 11675๋ฒ: ํ์๋จธ์ ๋ณธ๋ฌธ
๐ฅ ๋ฌธ์
https://www.acmicpc.net/problem/11657
๐ ์ค๊ณ
์์์ธ ๊ฐ์ ์ด ์กด์ฌํ๋ฏ๋ก, ๋ฒจ๋ง ํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผ ํ๋ค. ๋ฐ์ดํฌ์คํธ๋ผ๋ฅผ ์ด์ฉํ๋ค๋ฉด ์์ ๊ฐ์ ์ผ๋ก ์ธํด ๊ฑฐ๋ฆฌ๊ฐ ์์ ๋ฌดํ๋๋ก ๊ณ์ ๊ฐฑ์ ๋์ด ๋ฌดํ ๋ฃจํ์ ๋น ์ง๊ฒ ๋๋ค.
๊ธฐ๋ณธ์ ์ธ ๋ฒจ๋ง ํฌ๋ ์์ Dx(y) = min(Dx(y), Dx(z) + z~y)์ด๋ค. x์์ y๊น์ง์ ์ต์ ๊ฑฐ๋ฆฌ๋ x์์ z๊น์ง ์ต์ ๊ฑฐ๋ฆฌ + z์์ y๊น์ง์ ๊ฑฐ๋ฆฌ ์ค ์ต์๊ฐ์ด๋ค. ๋ฒจ๋ง ํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ฒจ๋ง ํฌ๋ ์ ์ ์ฉ์ด ํ์ฐ๋๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๋ฌผ๋ก , ๋ฒจ๋ง ํฌ๋ ์๊ณ ๋ฆฌ์ฆ๋ ์ฌ์ดํด๋ก ์ธํด ์์ ๋ฌดํ๋๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ ์ ์ ๊ฐ์๊ฐ n์ด๋ผ๊ณ ํ ๋, ํ ์ ์ ์์ ๋ค๋ฅธ ์ ์ ๋ค๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ชจ๋ ๊ฐฑ์ ํ๋๋ฐ๋ n-1๋ฒ ๋ชจ๋ ๊ฐ์ ์ ๋ํด ๋ฒจ๋ง ํฌ๋ ์์ ์ ์ฉํ๋ฉด ๋๋ค. ํ ์ ์ ์์ ์ด๋ค ์ ์ ์ผ๋ก ๊ฐ๋๋ฐ ๊ฐ์ ์ ์ต๋ n-1๋ฒ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ ์ด์ ๊ฐฑ์ ์ด ์ด๋ฃจ์ด์ง๋ค๋ฉด, ์์ ๊ฐ์ ์ด ํฌํจ๋ ์ฌ์ดํด ๋๋ฌธ์ผ๋ก ๋ณด๋ฉด ๋๋ค.
๐ ํ์ด
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
long long n, m, a, b, c;
vector<long long> dist(501, 1e9 + 7);
vector<vector<int>> edges(6000, vector<int>(3));
bool bf(int start) {
dist[start] = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int cur_node = edges[j][0];
int next_node = edges[j][1];
int cost = edges[j][2];
if (dist[cur_node] != 1e9+7 && dist[next_node] > dist[cur_node] + cost) {
dist[next_node] = dist[cur_node] + cost;
if (i == n - 1) {
return true;
}
}
}
}
return false;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < m; i++) {
for (int j = 0; j < 3; j++) {
cin >> edges[i][j];
}
}
bool result = bf(1);
if (result) {
cout << -1 << "\n";
}
else {
for (int i = 2; i <= n; i++) {
if (dist[i] == 1e9 + 7) {
cout << -1 << "\n";
}
else {
cout << dist[i] << "\n";
}
}
}
return 0;
}
'๐ PS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1918๋ฒ: ํ์ ํ๊ธฐ์ (0) | 2024.08.08 |
---|---|
[Baekjoon] 11501๋ฒ: ์ฃผ์ (0) | 2024.08.07 |
[Baekjoon] 1916๋ฒ: ์ต์๋น์ฉ ๊ตฌํ๊ธฐ (0) | 2024.08.06 |
[Baekjoon] 1753๋ฒ: ์ต๋จ๊ฒฝ๋ก (0) | 2024.08.05 |
[Baekjoon] 1181๋ฒ: ๋จ์ด ์ ๋ ฌ (0) | 2024.08.04 |