๋์ด๋ | ์ ๋ต๋ฅ |
โ โ | -% |
ํ๋ฆฌ๋ฏธ์ ์๊ณ ๋ฆฌ์ฆ ์ํด๋ฆฌ ๋นํ์๊ณ ์์ฆ3 1์ฃผ์ฐจ
๋ฌธ์
๋ฐฑ์ ์ ํ ๋ช ์ ํ์์๊ฒ ์ ์ข ํ๋ฉด ๋ฐ์ด๋ฌ์ค์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ํด๋น ์ฌ๋๊ณผ ๋ฐ์ ํ๊ฒ ์ ์ดํ๋ ์ฌ๋๋ค์๊ฒ ์ ํ๋์ด ๊ทธ ์ฌ๋๋ค๊น์ง ๋ชจ๋ ์น๋ฃํ๋ค. ๋งค์ฐ ํจ๊ณผ์ ์ด๊ณ ๋น ๋ฅธ ์๋๋ก ์ ํ๋์ง๋ง, ์ ์ ๋น์ฉ์ด ๋๋ฌด ๋ง์ด ๋ ๋ค๋ ๋จ์ ์ผ๋ก ์ธํด ํ์ฌ ํ๋กํ ํ์ ์ผ๋ก ์ ์๋ ๋จ ํ๋์ ๋ฐฑ์ ๋ง ์ฌ์ฉํ ์ ์๋ ์ํฉ์ด๋ค.
ํ๋์ ๋ฐฑ์ ์ ์ด์ฉํ์ฌ ๊ฐ์ฅ ๋ง์ ์ฌ๋๋ค์ ์น๋ฃํ๊ณ ์ ํ ๋, ์ด๋ค ์ฌ๋์๊ฒ ๋ฐฑ์ ์ ์ ์ข ํด์ผ ํ๋์ง ๊ตฌํด๋ณด์.
ํ์๋ค์ ์ N, ํ์ ์ฌ์ด ๊ด๊ณ์ ์ M
2 ≤ N, M ≤ 200,000
๊ด๊ณ๋ a b ํํ๋ก ์ฃผ์ด์ง๊ณ , ๋ ํ์๊ฐ ์๋ก ๋ฐ์ ํ๊ฒ ์ ์ดํ ์ ์์์ ๋ปํ๋ค.
ํด๊ฒฐ
key point, DFS๋๋BFS๋ก ์ฐ๊ฒฐ๋์ด ์๋ ์ต๋ ๋ ธ๋ ๊ฐ์์ ์์ ๋ ธ๋์ ๋ฒํธ๋ฅผ ๊ตฌํ๋ค.
- 2์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ๊ด๊ณ a, b๊ฐ ์ฃผ์ด์ง๋ฉด aํ์ b๋ฅผ ์ถ๊ฐํ๊ณ bํ์ a๋ฅผ ์ถ๊ฐํ๋ค.
- 1๋ถํฐ N๋ฒ ํ์๊น์ง ํ์ธํ์ง ์์๋ค๋ฉด ์ฐ๊ฒฐ๋์ด์๋ ํ์์ ์๋ฅผ ์ผ๋ค.
- 1๋ฒ ๋ถํฐ i-1๋ฒ๊น์ง ํ์ ์ค ์ฐ๊ฒฐ๋์ด์๋ ํ์์ ์๊ฐ ๊ฐ์ฅ ์ปธ๋ ๊ฐ์ maxCnt๋ผ๊ณ ํ๊ณ
- i๋ฒ์งธ ํ์์ ์ฐ๊ฒฐ๋์ด์๋ ํ์์ ์๊ฐ cnt์ผ ๋
- maxCnt < cnt ์ด๋ฉด maxCnt๋ฅผ cnt๋ก ๊ฐฑ์ ํ๊ณ , maxNum ์ i๋ก ๊ฐฑ์ ํ๋ค.
1๋ฒ ๋ถํฐ N ๋ฒ ํ์๊น์ง ๋ชจ๋ ํ์ธ์ ํ๋ค๋ฉด,
'๋ฐฑ์ ์ ๊ฐ์ฅ ๋ง์ด ํผ๋จ๋ฆฌ๊ธฐ ์ํด ์ ์ข
ํด์ผ ํ๋ ํ์์ ๋ฒํธ(maxNum)'์ 'ํด๋น ํ์์๊ฒ ๋ฐฑ์ ์ ์ ์ข
ํ์ ๋ ์น๋ฃํ ์ ์๋ ํ์์ ์(maxCnt)'๋ฅผ ์ถ๋ ฅํ๋ค.
์ฝ๋
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
|
#include <iostream>
#include <string.h>
#include <vector>
#include <algorithm>
using namespace std;
vector<vector<int>> v;
int n, m, maxNum, maxCnt, cnt;
int chk[200005];
void dfs(int num) {
for (auto child: v[num]) {
if (!chk[child]) {
cnt++;
chk[child] = 1;
dfs(child);
}
}
}
int main() {
scanf("%d %d", &n, &m);
v.resize(n+1);
for (int i = 0, a, b; i < m; i++) {
scanf("%d %d", &a, &b);
v[a].push_back(b);
v[b].push_back(a);
}
for (int i = 1; i <= n; i++) {
if (!chk[i]) {
cnt = 1;
chk[i] = 1;
dfs(i);
if (maxCnt < cnt) {
maxCnt = cnt;
maxNum = i;
}
}
}
printf("%d %d", maxNum, maxCnt);
return 0;
}
|
cs |
ํ๊ธฐ
๋๋ DFS๋ก ํ์์ง๋ง ํด์ค์ ํ์ธํ๋, 1๋ถํฐ N(200,000)๊น์ง ์ํ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ทธ๋ํ์ผ ๊ฒฝ์ฐ DFS๋ก ๊ตฌํํ๋ค๋ฉด ํ ๋ฒ์ DFS๋ก ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ์ ์๊ธฐ ๋๋ฌธ์ ์คํ ์ค๋ฒํ๋ก์ฐ๊ฐ ์๊ธธ ๊ฐ๋ฅ์ฑ์ด ์์ด BFS๋ก ํธ๋๊ฒ ์์ ํ๋ค๊ณ ํ๋ค.
์ฌ๊ทํจ์๋ ์คํ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ , ํ๊ณ ์๋ ๋ฌธ์ ์ ์คํ ์์ญ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ด ์๋ค๋ฉด DFS๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๊ณ ๋ คํด๋ณผ ํ์๊ฐ ์์ต๋๋ค.
+ ๊ตฌ๋ฆ ์ฑ์ ํ๊ฒฝ์์์ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ฏ๋ก ํด๋น๋์ง ์๋๋ค๊ณ ํ๋ค.
์คํ ์ค๋ฒํ๋ก์ฐ๋?
์คํ ํฌ์ธํฐ๊ฐ ์คํ์ ๊ฒฝ๊ณ๋ฅผ ๋์ด์ค ๋ ์ผ์ด๋๋ค. ํธ์ถ ์คํ์ ์ ์๋ ์์ ์ฃผ์ ๊ณต๊ฐ์ ์ด๋ฃจ๋ฉฐ ๋๊ฐ ํ๋ก๊ทธ๋จ ์์ ์ ๊ฒฐ์ ๋๋ค.
ํ๋ก๊ทธ๋จ์ด ํธ์ถ ์คํ์์ ์ด์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ ์ด์์ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ ๋, ์คํ์ด ์ค๋ฒํ๋ก(overflow)๋๋ค๊ณ ํ๋ฉฐ ์ด ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ ์ถฉ๋์ด ๋ฐ์ํ๊ฒ ๋๋ค.
'๐ฅ PS(Problem Solving) ๐ฅ > goorm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ตฌ๋ฆLEVEL] ๋ณ๋ค์ ์ ์ (0) | 2020.03.24 |
---|---|
[๊ตฌ๋ฆLEVEL] ์ ์ต์ (0) | 2020.03.23 |
[๊ตฌ๋ฆLEVEL] Dance Dance Revolution (0) | 2020.03.23 |
[๊ตฌ๋ฆLEVEL] ๊ฒฝํ ์ถ์ฒจ (0) | 2020.03.23 |
[๊ตฌ๋ฆLEVEL] ์ธ์ธ๊ฐ ๋๊ณ ์ถ์ ๋ฏผ์ (0) | 2020.03.16 |
๋๊ธ