https://www.acmicpc.net/problem/2644
๋ฌธ์
์ฐ๋ฆฌ ๋๋ผ๋ ๊ฐ์กฑ ํน์ ์น์ฒ๋ค ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ด์๋ผ๋ ๋จ์๋ก ํํํ๋ ๋ ํนํ ๋ฌธํ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด๋ฌํ ์ด์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ณ์ฐ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ชจ์ ์์ ์ฌ์ด๋ฅผ 1์ด์ผ๋ก ์ ์ํ๊ณ ์ด๋ก๋ถํฐ ์ฌ๋๋ค ๊ฐ์ ์ด์๋ฅผ ๊ณ์ฐํ๋ค. ์๋ฅผ ๋ค๋ฉด ๋์ ์๋ฒ์ง, ์๋ฒ์ง์ ํ ์๋ฒ์ง๋ ๊ฐ๊ฐ 1์ด์ผ๋ก ๋์ ํ ์๋ฒ์ง๋ 2์ด์ด ๋๊ณ , ์๋ฒ์ง ํ์ ๋ค๊ณผ ํ ์๋ฒ์ง๋ 1์ด, ๋์ ์๋ฒ์ง ํ์ ๋ค๊ณผ๋ 3์ด์ด ๋๋ค.
์ฌ๋ฌ ์ฌ๋๋ค์ ๋ํ ๋ถ๋ชจ ์์๋ค ๊ฐ์ ๊ด๊ณ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฃผ์ด์ง ๋ ์ฌ๋์ ์ด์๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฌ๋๋ค์ 1, 2, 3, …, n (1 ≤ n ≤ 100)์ ์ฐ์๋ ๋ฒํธ๋ก ๊ฐ๊ฐ ํ์๋๋ค. ์ ๋ ฅ ํ์ผ์ ์ฒซ์งธ ์ค์๋ ์ ์ฒด ์ฌ๋์ ์ n์ด ์ฃผ์ด์ง๊ณ , ๋์งธ ์ค์๋ ์ด์๋ฅผ ๊ณ์ฐํด์ผ ํ๋ ์๋ก ๋ค๋ฅธ ๋ ์ฌ๋์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์งธ ์ค์๋ ๋ถ๋ชจ ์์๋ค ๊ฐ์ ๊ด๊ณ์ ๊ฐ์ m์ด ์ฃผ์ด์ง๋ค. ๋ท์งธ ์ค๋ถํฐ๋ ๋ถ๋ชจ ์์๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๋ ๋ฒํธ x,y๊ฐ ๊ฐ ์ค์ ๋์จ๋ค. ์ด๋ ์์ ๋์ค๋ ๋ฒํธ x๋ ๋ค์ ๋์ค๋ ์ ์ y์ ๋ถ๋ชจ ๋ฒํธ๋ฅผ ๋ํ๋ธ๋ค.
๊ฐ ์ฌ๋์ ๋ถ๋ชจ๋ ์ต๋ ํ ๋ช ๋ง ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ ๋ ฅ์์ ์๊ตฌํ ๋ ์ฌ๋์ ์ด์๋ฅผ ๋ํ๋ด๋ ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ๋ ์ฌ๋์ ์น์ฒ ๊ด๊ณ๊ฐ ์ ํ ์์ด ์ด์๋ฅผ ๊ณ์ฐํ ์ ์์ ๋๊ฐ ์๋ค. ์ด๋์๋ -1์ ์ถ๋ ฅํด์ผ ํ๋ค.
์ค๋ฒ2.
bfs ํ์์ผ๋ก ํ ์ ์๋? ๋ค์ต์คํธ๋ผ ๋ฌธ์ ์ด๋ค
์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ ์๋ค
๋์ ํ์ด
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int n, x, y, q, w, m;
int d[102];
int visited[102];
int main() {
cin >> n >> x >> y >> m;
vector<vector<int>> a(n + 1);
priority_queue<pair<int, int>> p;
while(m--) {
cin >> q >> w;
a[q].push_back(w);
a[w].push_back(q);
}
fill(d, d + n + 1, 101);
d[x] = 0;
p.push({0, x});
// bfs
while (!p.empty()){
int nw = p.top().second;
p.pop();
if (visited[nw]) continue;
visited[nw] = true;
for (auto t : a[nw]) {
if (d[t] > d[nw] + 1) {
d[t] = d[nw] + 1;
p.push({-d[t], t});
}
}
}
if (d[y] == 101) d[y] = -1;
cout << d[y] << endl;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/BOJ] 11660 : ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (DP) (0) | 2024.11.17 |
---|---|
[C++/BOJ] 2169 : ๋ก๋ด ์กฐ์ข ํ๊ธฐ (DP) (0) | 2023.05.26 |
[C++/BOJ] 1325 : ํจ์จ์ ์ธ ํดํน (BFS/DFS) (1) | 2023.05.14 |
[C++/BOJ] 1012 : ์ ๊ธฐ๋ ๋ฐฐ์ถ (BFS/DFS) (0) | 2023.05.12 |
[C++/BOJ] 1417 : ๊ตญํ์์ ์ ๊ฑฐ (์๋ฃ๊ตฌ์กฐ) (1) | 2023.05.06 |