728x90
https://www.acmicpc.net/problem/2667
2667๋ฒ: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. ์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค. ์ฌ
www.acmicpc.net
bfs๋ก ํ์์
์ฝ๋๊ฐ ์ฝ๊ฐ ์ง์ ๋ถํ ๋๋์ด๋ค,,
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int map[25][25]; //์ง๋
bool visited[25][25]; //๋ฐฉ๋ฌธ ์ฒดํฌ
queue<pair<int,int>> q;
int cnt=0; //๋จ์ง๋ณ ์ง์ ๊ฐ์ count
vector<int> v; //๋จ์ง๋ณ ์ง์ ๊ฐ์ ์ ์ฅ
int bfs(int x, int y){
visited[x][y]=true;
q.push(make_pair(x,y));
cnt++;
while(!q.empty()){
int a=q.front().first;
int b=q.front().second;
q.pop();
if(a<n-1 && !visited[a+1][b] && map[a+1][b]==1){
q.push(make_pair(a+1,b));
visited[a+1][b]=1;
cnt++;
}
if(a>0 && !visited[a-1][b] && map[a-1][b]==1){
q.push(make_pair(a-1,b));
visited[a-1][b]=1;
cnt++;
}
if(b<n-1 && !visited[a][b+1] && map[a][b+1]==1){
q.push(make_pair(a,b+1));
visited[a][b+1]=1;
cnt++;
}
if(b>0 && !visited[a][b-1] && map[a][b-1]==1){
q.push(make_pair(a,b-1));
visited[a][b-1]=1;
cnt++;
}
}
return cnt;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
string temp;
cin>>temp;
for(int j=0;j<n;j++) map[i][j]=temp[j]-'0';
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(!visited[i][j]){
if(map[i][j]==0) visited[i][j]=1;
else v.push_back(bfs(i,j));
cnt=0;
}
}
}
cout<<v.size()<<"\n";
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++) cout<<v[i]<<"\n";
return 0;
}
728x90
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > DFS,BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]4963๋ฒ: ์ฌ์ ๊ฐ์ (0) | 2023.02.23 |
---|---|
[์ด์ฝํ ]๋ฏธ๋ก ํ์ถ / [๋ฐฑ์ค]2178๋ฒ: ๋ฏธ๋ก ํ์ (0) | 2023.02.23 |
[์ด์ฝํ ] ์๋ฃ์ ์ผ๋ ค ๋จน๊ธฐ (1) | 2023.02.23 |
dfs, bfs ํ์ด์ฌ ๊ตฌํ (0) | 2023.02.23 |
[๋ฐฑ์ค]2644๋ฒ: ์ด์๊ณ์ฐ (0) | 2023.02.18 |