标签:space nsf 代码 each weight key params tle ota
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 48370 | Accepted: 23775 |
Description
Input
Output
Sample Input
10 12 W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W.....W. .W.W......W. ..W.......W.
Sample Output
3
Hint
Source
【题意】
对于一个图,八个方向代表相邻,求出相邻的(联通)块的个数
【分析】
以一个点W为入口将相邻的W 深搜一遍,同时将他改掉,避免重搜
【代码】
#include<cstdio>
using namespace std;
const int N=105;
int n,m,ans,dir[8][2]={{0,1},{0,-1},{1,0},{-1,0},{-1,-1},{1,-1},{1,1},{-1,1}};
char mp[N][N];
void dfs(int x,int y){
mp[x][y]=‘.‘;
for(int i=0;i<8;i++){
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(nx<1||ny<1||nx>n||ny>m||mp[nx][ny]==‘.‘) continue;
dfs(nx,ny);
}
}
inline void Init(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%s",mp[i]+1);
}
inline void Solve(){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(mp[i][j]==‘W‘){
dfs(i,j);
ans++;
}
}
}
printf("%d",ans);
}
int main(){
Init();
Solve();
return 0;
}
标签:space nsf 代码 each weight key params tle ota
原文地址:https://www.cnblogs.com/shenben/p/10353174.html