[ ๋ฌธ์ ๋งํฌ ]
https://www.acmicpc.net/problem/1260
๐ฉ ์กฐ๊ฑด
- ๊ทธ๋ํ๋ฅผ DFS, BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๊ฐ ์ถ๋ ฅํด๋ผ.
- ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ด๋ฉด ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํด์ผ ํจ
- ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000)
- ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๊ฐ์ ์ ์๋ฐฉํฅ
๐ฉ ์ ๊ทผ
2 -> ์ ๋ ฅ์ ๋ชจ๋ ์ ์ฅํ ํ sort ํจ์๋ฅผ ์ด์ฉํ์ฌ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
DFS -> stack
BFS -> queue
๐ฉ ์ํ์ฐฉ์ค
- memset(์์ ํฌ์ธํฐ, ์ค์ ํ ๊ฐ, ํฌ๊ธฐ) : cstring ํค๋ํ์ผ ํ์
- ex. memset(visit, false, sizeof(visit))
- ์ปดํ์ผ ์๋ฌ - sort ํจ์ ์ฌ์ฉ์ algorithm ํค๋ํ์ผ ํ์, bool์ boolean์ผ๋ก ์คํ
- ์ปดํ์ผ ์๋ฌ(Segfault) - v[0]์ ๋ฒ๋ฆฌ๋ vector์ฌ์ ๋น์ด์๋๋ฐ for๋ฌธ์์ 0๋ถํฐ ์์ํจ
- ์๊ฐ์ด๊ณผ - bfs ๊ตฌํ์ ์ผ๋จ ๋ค pushํ ํ visit๊ณผ ๋น๊ตํ๋ฉฐ pop/์ฌ๊ทํ๋๋ก ํ๋๋ฐ, ์ด ๋ถ๋ถ์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ์์ํ์ฌ push ์ visit ์ฌ๋ถ๋ฅผ ํ์ธํ๋๋ก ์์ . ๊ทธ๋ฆฌ๊ณ queue.front()๋ฅผ ํธ์ถํ๊ธฐ ์ ๋ฐ๋์ empty ์ฌ๋ถ ํ์ธํด์ผํจ.(๋ฐํ์ ์๋ฌ ๋์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ๋ฏ)
- ์ถ๋ ฅ ํ์ ๋ฌธ์ - ์ถ๋ ฅ ๋ง์ง๋ง์ ๊ณต๋ฐฑ/์ค๋ฐ๊ฟ ์์ด๋ ์๊ด ์์ but ์์ผ๋ฉด ์๊ด์๋๋ด
๐ป ์ฝ๋ (C++)
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
vector<int> v[1001]; // ๊ฐ ๋
ธ๋์ ๊ฐ์ ์ ์ฅ
bool visit[1001];
queue<int> q;
void dfs(int start){
cout<<start<<" ";
visit[start] = true;
for(int i=0;i<v[start].size();i++){
int next = v[start][i];
if(visit[next]) continue;
dfs(next);
}
}
void bfs(int start){
cout<<start<<" ";
visit[start] = true;
for(int i=0;i<v[start].size();i++){
int next = v[start][i];
if(visit[next]) continue;
q.push(next);
}
while(!q.empty() && visit[q.front()]){
q.pop();
}
if(!q.empty())
bfs(q.front());
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int N,M,V,a,b;
cin>>N>>M>>V;
for(int i=0;i<M;i++){
cin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
for(int i=1;i<=N;i++){
sort(v[i].begin(), v[i].end());
}
dfs(V);
memset(visit, false, sizeof(visit));
cout<<"\n";
bfs(V);
}
'๐ป Algorithms > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 10814 ๋์ด์ ์ ๋ ฌ - ์ ๋ ฌ (0) | 2024.08.24 |
---|---|
[๋ฐฑ์ค] 5397 ํค๋ก๊ฑฐ - ์ฐ๊ฒฐ ๋ฆฌ์คํธ (0) | 2024.08.24 |
[๋ฐฑ์ค] 2164 ์นด๋2 - ํ (0) | 2024.08.19 |
[๋ฐฑ์ค] 1992 ์ฟผ๋ํธ๋ฆฌ - ์ฌ๊ทํจ์ (0) | 2024.08.19 |
[๋ฐฑ์ค] 11403 ๊ฒฝ๋ก ์ฐพ๊ธฐ - ๊ทธ๋ํ, DFS (0) | 2024.08.17 |