๐ป
[๋ฐฑ์ค] DFS์BFS - 2606. ๋ฐ์ด๋ฌ์ค ๋ณธ๋ฌธ
[๋ฐฑ์ค] DFS์BFS - 2606. ๋ฐ์ด๋ฌ์ค
๋ํจ๋ 2020. 2. 13. 03:00๋ฌธ์
์ ์ข ๋ฐ์ด๋ฌ์ค์ธ ์ ๋ฐ์ด๋ฌ์ค๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ํ๋๋ค. ํ ์ปดํจํฐ๊ฐ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๋ฉด ๊ทธ ์ปดํจํฐ์ ๋คํธ์ํฌ ์์์ ์ฐ๊ฒฐ๋์ด ์๋ ๋ชจ๋ ์ปดํจํฐ๋ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด 7๋์ ์ปดํจํฐ๊ฐ <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ๋คํธ์ํฌ ์์์ ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ํ์. 1๋ฒ ์ปดํจํฐ๊ฐ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๋ฉด ์ ๋ฐ์ด๋ฌ์ค๋ 2๋ฒ๊ณผ 5๋ฒ ์ปดํจํฐ๋ฅผ ๊ฑฐ์ณ 3๋ฒ๊ณผ 6๋ฒ ์ปดํจํฐ๊น์ง ์ ํ๋์ด 2, 3, 5, 6 ๋ค ๋์ ์ปดํจํฐ๋ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ค. ํ์ง๋ง 4๋ฒ๊ณผ 7๋ฒ ์ปดํจํฐ๋ 1๋ฒ ์ปดํจํฐ์ ๋คํธ์ํฌ์์์ ์ฐ๊ฒฐ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
์ด๋ ๋ 1๋ฒ ์ปดํจํฐ๊ฐ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ ธ๋ค. ์ปดํจํฐ์ ์์ ๋คํธ์ํฌ ์์์ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ ์ ๋ณด๊ฐ ์ฃผ์ด์ง ๋, 1๋ฒ ์ปดํจํฐ๋ฅผ ํตํด ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ ์ปดํจํฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ปดํจํฐ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ปดํจํฐ์ ์๋ 100 ์ดํ์ด๊ณ ๊ฐ ์ปดํจํฐ์๋ 1๋ฒ ๋ถํฐ ์ฐจ๋ก๋๋ก ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง๋ค. ๋์งธ ์ค์๋ ๋คํธ์ํฌ ์์์ ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ ์ปดํจํฐ ์์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ด์ด์ ๊ทธ ์๋งํผ ํ ์ค์ ํ ์์ฉ ๋คํธ์ํฌ ์์์ ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ ์ปดํจํฐ์ ๋ฒํธ ์์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
1๋ฒ ์ปดํจํฐ๊ฐ ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ ธ์ ๋, 1๋ฒ ์ปดํจํฐ๋ฅผ ํตํด ์ ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ ์ปดํจํฐ์ ์๋ฅผ ์ฒซ์งธ ์ค์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1
7
6
1 2
2 3
1 5
5 2
5 6
4 7
์์ ์ถ๋ ฅ1
4
์๊ฐ
DFS์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์๋ค. visited๋ฐฐ์ด์ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๊ฒ์ผ๋ก ๋๊ณ 1์ด๋ฉด ๋ฐฉ๋ฌธ์ ํ ๊ฒ์ผ๋ก ํ์๋ค.
์ธ์ ํ๋ ฌ์ ์ด์ฉํด์ ํ์๋๋ฐ, ์ธ์ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด์๋ ํ์ด๋ณด์.
์์ฑํ ์ฝ๋
#include <iostream>
using namespace std;
int n, p;
int computer[101][101];
int visited[101]; //๋ฐฉ๋ฌธํ๋์ง ์ํ๋์ง ๋ฐฐ์ด
int cnt=0;
void DFS(int start, int pair){
visited[start]=1;
cnt ++;
for(int i=0; i<n+1; i++){
if(computer[start][i]==1 && visited[i]==0){ //์ฐ๊ฒฐ๋์ด ์๊ณ ๋ฐฉ๋ฌธ์ํ ๋
ธ๋๋ฉด
DFS(i, pair); //ํด๋น๋
ธ๋๋ฅผ ์์๋
ธ๋๋ก ํ์ฌ ํ์
}
}
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n; // ์ปดํจํฐ ์
cin >> p; // ์ปดํจํฐ ์์ ์
for(int i=0; i<p; i++){
int a,b;
cin >> a >> b;
computer[a][b] = 1;
computer[b][a] = 1;
}
DFS(1, p);
cout << cnt-1 <<"\n";
return 0;
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋์ ๊ณํ๋ฒ - 2293. ๋์ 1 (0) | 2020.02.17 |
---|---|
[๋ฐฑ์ค] ๊ทธ๋ฆฌ๋ - 1202. ๋ณด์๋๋ (0) | 2020.02.13 |
[๋ฐฑ์ค] ์ฐ์ ์์ ํ - 11286. ์ ๋๊ฐ ํ (0) | 2020.02.13 |
[๋ฐฑ์ค] ๋ถํ ์ ๋ณต - 1992. ์ฟผ๋ํธ๋ฆฌ(๋ฌธ์ ํธ๋์ค) (0) | 2020.02.12 |
[๋ฐฑ์ค] ๋ถํ ์ ๋ณต - 1654. ๋์ ์๋ฅด๊ธฐ (0) | 2020.02.12 |