์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๊น์ด์ฐ์ ํ์
- ์ค๋ธ์
- ๋จธ์ง์ํธ
- DFS
- SQL
- ๊ตฌํ
- LIS
- db
- ์ ๋ ฌ
- ๋ณํฉ์ ๋ ฌ
- ๋๋น์ฐ์ ํ์
- ์์๊ตฌํ๊ธฐ
- ๋์ ํฉ
- ์ฐ์ ์์ํ
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค
- ๊ทธ๋ฆฌ๋
- ๊ทธ๋ํํ์
- BFS
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ์๋ฃ๊ตฌ์กฐ
- ํ์ด์ฌ
- ๊ทธ๋ํ
- ๋์ ๊ณํ๋ฒ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์์ํ์
- DP
- ์ํ
- ํ๋ก๊ทธ๋๋จธ์ค
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๋ฐฑ์ค] 1325๋ฒ: ํจ์จ์ ์ธ ํดํน - C++ ๋ณธ๋ฌธ
๋ฌธ์
ํด์ปค ๊น์ง๋ฏผ์ ์ ์๋ ค์ง ์ด๋ ํ์ฌ๋ฅผ ํดํนํ๋ ค๊ณ ํ๋ค. ์ด ํ์ฌ๋ N๊ฐ์ ์ปดํจํฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊น์ง๋ฏผ์ ๊ท์ฐฎ๊ธฐ ๋๋ฌธ์, ํ ๋ฒ์ ํดํน์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ์ปดํจํฐ๋ฅผ ํดํน ํ ์ ์๋ ์ปดํจํฐ๋ฅผ ํดํนํ๋ ค๊ณ ํ๋ค.
์ด ํ์ฌ์ ์ปดํจํฐ๋ ์ ๋ขฐํ๋ ๊ด๊ณ์, ์ ๋ขฐํ์ง ์๋ ๊ด๊ณ๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ, A๊ฐ B๋ฅผ ์ ๋ขฐํ๋ ๊ฒฝ์ฐ์๋ B๋ฅผ ํดํนํ๋ฉด, A๋ ํดํนํ ์ ์๋ค๋ ์๋ฆฌ๋ค.
์ด ํ์ฌ์ ์ปดํจํฐ์ ์ ๋ขฐํ๋ ๊ด๊ณ๊ฐ ์ฃผ์ด์ก์ ๋, ํ ๋ฒ์ ๊ฐ์ฅ ๋ง์ ์ปดํจํฐ๋ฅผ ํดํนํ ์ ์๋ ์ปดํจํฐ์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์, N๊ณผ M์ด ๋ค์ด์จ๋ค. N์ 10,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์, M์ 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ์ ๋ขฐํ๋ ๊ด๊ณ๊ฐ A B์ ๊ฐ์ ํ์์ผ๋ก ๋ค์ด์ค๋ฉฐ, "A๊ฐ B๋ฅผ ์ ๋ขฐํ๋ค"๋ฅผ ์๋ฏธํ๋ค. ์ปดํจํฐ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง ๋ฒํธ๊ฐ ํ๋์ฉ ๋งค๊ฒจ์ ธ ์๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์, ๊น์ง๋ฏผ์ด ํ ๋ฒ์ ๊ฐ์ฅ ๋ง์ ์ปดํจํฐ๋ฅผ ํดํนํ ์ ์๋ ์ปดํจํฐ์ ๋ฒํธ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ค.
๊ทธ๋ํ ํ์ ๋ฌธ์
DFS๋ฅผ ์ด์ฉํ์ฌ ํ์๋ค.
๊ทธ๋ํํ์ ์ด์ธ์ ์๊ฐํด์ค์ผํ ๊ฒ๋ค์ด ์์ด ์กฐ๊ธ ๊น๋ค๋ก์ ๋ ๋ฌธ์ .....๊ทผ๋ฐ ๊ทธ๋ฅ ๋ด๊ฐ ์ฝ์ง์ ๋ง์ด ํด์ ์ด๋ ต๊ฒ ๋๊ปด์ก๋๊ฑฐ๋คใ
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ขฐ ๊ฐ๋ฅํ ์ปดํจํฐ๋ผ๋ฆฌ ๋ฌถ์ด ๊ทธ๋ํ๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ , ๊ทธ๋ํ ํ์์ ํตํด ํดํนํ ์ ์๋ ์ปดํจํฐ์ ์๋ฅผ ์ธ์ด ํด๋น ์ปดํจํฐ๋ฅผ ํดํนํ์ ๋ ๋ช ๋๋ฅผ ํดํนํ ์ ์๋์ง๋ฅผ ๋ด๋ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ๊ทธ ๋ค ๊ฐ์ฅ ๋ง์ ์ปดํจํฐ๋ฅผ ํดํนํ ์ ์๋ ์ปดํจํฐ์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํด์ฃผ๋ฉด ๋์ด๋ค.
๊ทธ๋์ ๋จ์ํ DFS๋ง ๋ฉ์ฉกํ๊ฒ ๊ตฌํ ๊ฐ๋ฅํ๋ฉด ์ฌ์ค ๊ฐ๋จํ๊ฒ ํ ์ ์๋๋ฐ,,
์๊ฐ/๋ฉ๋ชจ๋ฆฌ ์ ํ์ผ๋ก ์ธํด ๊ณ ๋ คํด์ผ๋ ๋ถ๋ถ๋ค ๋๋ฌธ์ ์ ๋ต๊น์ง ์ค๋๊ฑธ๋ ธ๋ ๊ฒ ๊ฐ๋ค..
์ฝ๋
#include <cstdio>
#include <vector>
#include <cstring>
#define MAX 10001
using namespace std;
int N, M;
int maximum, cnt;
vector<int> computer[MAX];
int counter[MAX];
bool visited[MAX];
void DFS(int num, int start);
int main(void) {
scanf("%d %d", &N, &M);
for(int i = 0; i < M; i++) {
int num1, num2;
scanf("%d %d", &num1, &num2);
computer[num2].push_back(num1);
}
for(int i = 1; i <= N; i++) {
memset(visited, false, N + 1);
cnt = 0;
DFS(i, i);
maximum = (counter[i] > maximum ? counter[i] : maximum);
}
for(int i = 1; i <= N; i++) {
if(counter[i] == maximum)
printf("%d ", i);
}
printf("\n");
return 0;
}
void DFS(int num, int start) {
visited[num] = true;
int len = computer[num].size();
for(int i = 0; i < len; i++) {
int next = computer[num][i];
if(!visited[next]) {
cnt++;
DFS(next, start);
}
}
counter[start] = (counter[start] > cnt ? counter[start] : cnt);
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1309๋ฒ: ๋๋ฌผ์ - C++ (0) | 2022.07.26 |
---|---|
[๋ฐฑ์ค] 2302๋ฒ: ๊ทน์ฅ ์ข์ - C++ (0) | 2022.07.21 |
[๋ฐฑ์ค] 1904: 01ํ์ผ - C++ (0) | 2022.07.15 |
[๋ฐฑ์ค] 2240๋ฒ: ์๋๋๋ฌด - C++ (0) | 2022.07.14 |
[๋ฐฑ์ค] 11047: ๋์ 0 - C++ (0) | 2022.07.12 |