์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- DP
- DFS
- ์ค๋ธ์
- ์๋ฃ๊ตฌ์กฐ
- ๊ทธ๋ํํ์
- ์ํ
- ๋จธ์ง์ํธ
- ๊ตฌํ
- ๋๋น์ฐ์ ํ์
- ํ์ด์ฌ
- ์๊ณ ๋ฆฌ์ฆ
- ์ฐ์ ์์ํ
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- SQL
- LIS
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋์ ํฉ
- ์์๊ตฌํ๊ธฐ
- db
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- BFS
- ํ๋ก๊ทธ๋๋จธ์ค
- ๊ทธ๋ํ
- ์ ๋ ฌ
- ์์ํ์
- ๊น์ด์ฐ์ ํ์
- ๊ทธ๋ฆฌ๋
- ๋ฐฑ์ค
- ๋ณํฉ์ ๋ ฌ
- ๋์ ๊ณํ๋ฒ
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๋ฐฑ์ค] 5567๋ฒ: ๊ฒฐํผ์ - C++ ๋ณธ๋ฌธ
๋ฌธ์
์๊ทผ์ด๋ ์์ ์ ๊ฒฐํผ์์ ํ๊ต ๋๊ธฐ ์ค ์์ ์ ์น๊ตฌ์ ์น๊ตฌ์ ์น๊ตฌ๋ฅผ ์ด๋ํ๊ธฐ๋ก ํ๋ค. ์๊ทผ์ด์ ๋๊ธฐ๋ ๋ชจ๋ N๋ช ์ด๊ณ , ์ด ํ์๋ค์ ํ๋ฒ์ ๋ชจ๋ 1๋ถํฐ N๊น์ง์ด๋ค. ์๊ทผ์ด์ ํ๋ฒ์ 1์ด๋ค.
์๊ทผ์ด๋ ๋๊ธฐ๋ค์ ์น๊ตฌ ๊ด๊ณ๋ฅผ ๋ชจ๋ ์กฐ์ฌํ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด ๋ฆฌ์คํธ๋ฅผ ๋ฐํ์ผ๋ก ๊ฒฐํผ์์ ์ด๋ํ ์ฌ๋์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์๊ทผ์ด์ ๋๊ธฐ์ ์ n (2 ≤ n ≤ 500)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ๋ฆฌ์คํธ์ ๊ธธ์ด m (1 ≤ m ≤ 10000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค๋ถํฐ m๊ฐ ์ค์๋ ์น๊ตฌ ๊ด๊ณ ai bi๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ ai < bi ≤ n) ai์ bi๊ฐ ์น๊ตฌ๋ผ๋ ๋ป์ด๋ฉฐ, bi์ ai๋ ์น๊ตฌ๊ด๊ณ์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์๊ทผ์ด์ ๊ฒฐํผ์์ ์ด๋ํ๋ ๋๊ธฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๊ทธ๋ํ ํ์์ ์ด์ฉํด์ ํธ๋ ๋ฌธ์ . BFS๋ฅผ ์ด์ฉํด์ ํ์๋ค.
์ต๋ํ ๋ด ํ์ผ๋ก, ๋ด ๋ฐฉ์์ผ๋ก ํ์ด๋ณด๋ ค๊ณ ์๋ฌด๊ฒ๋ ์๋ณด๊ณ ํ์๋๋ฐ ํจ์จ์ ์ด์ง๋ ์๊ณ ์์์ง๋ ์์ ์ฝ๋๋ผ ๋ง์์๋ ์๋ค๊ณ ๋น์ฐํ ์ด๊ฑฐ๋ณด๋ค ๋ ๊ฐ๋จํ๊ฒ ํธ๋ ๋ฐฉ๋ฒ๋ ์์๊ฒ์ด๋ค...
์น๊ตฌ์ ์น๊ตฌ๋ค๊น์ง๋ง ๊ฒฐํผ์์ ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์, ๊ทธ๋ํ์์ 1 ๊ธฐ์ค์ผ๋ก ๊น์ด๊ฐ 2 ์ด์ ๋๋ ์น๊ตฌ๋ค๋ถํฐ๋ ์๊ฐํ์ง ์๋๋ค. ๋ฐ๋ผ์ 1์์๋ถํฐ์ ๊น์ด๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด์ ํ๋ ๋ ๋ง๋ค์ด ๊น์ด๊ฐ 3 ์ด์์ด ๋์์ ๊ฒฝ์ฐ ํ์์ ๋ฉ์ถ๊ณ ์ง๊ธ๊น์ง ์ผ ์น๊ตฌ์ ์๋ฅผ ์ถ๋ ฅ์ํจ๋ค.
์ฒ์์ ๊น์ด ๋ถํฐ ์๊ฐํด์ DFS๋ก ํ์๋๋ฐ ๊ทธ๋ฌ๋ฉด ๊ฑธ๋ฆฌ๋ ์์ ๊ฐ ์๋ ๊ฒ ๊ฐ๋๋ผ...
์ฝ๋
#include <cstdio>
#include <queue>
#define MAX 501
using namespace std;
int friends[MAX][MAX] = { 0 };
bool visited[MAX] = { false };
int depth[MAX] = { 0 };
int count = 0;
int n, m;
void BFS(int num);
int main(void) {
scanf("%d %d", &n, &m);
for(int i = 0; i < m; i++) {
int a, b;
scanf("%d %d", &a, &b);
friends[a][b] = friends[b][a] = 1;
}
BFS(1);
printf("%d\n", count);
return 0;
}
void BFS(int num) {
queue<int> q;
q.push(num);
visited[num] = true;
while(!q.empty()) {
int vertex = q.front();
q.pop();
for(int i = 1; i <= n; i++) {
if(visited[i] || friends[vertex][i] == 0)
continue;
q.push(i);
visited[i] = true;
depth[i] = depth[vertex] + 1;
if(depth[i] > 2) return;
count++;
}
}
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1507๋ฒ: ๊ถ๊ธํ ๋ฏผํธ - C++ (0) | 2022.01.21 |
---|---|
[๋ฐฑ์ค] 11404๋ฒ: ํ๋ก์ด๋ - C++ (0) | 2022.01.20 |
[๋ฐฑ์ค] 1222๋ฒ: ํ์ค ํ๋ก๊ทธ๋๋ฐ ๋ํ - C++ (0) | 2022.01.18 |
[๋ฐฑ์ค] 3024๋ฒ: ๋ง๋ผํค ํฑํํ - C++ (0) | 2022.01.17 |
[๋ฐฑ์ค] 1756๋ฒ: ํผ์ ๊ตฝ๊ธฐ - C++ (0) | 2022.01.14 |