1 solutions
-
1
题意
找有多少个8联通连在一起的传感器
思路
联通分量(8联通)
代码
#include<bits/stdc++.h> using namespace std; int n,m,ans=0; char a[1145][1145]; int vis[1145][1145]; int xl[8]={0,0,1,-1,1,-1,1,-1}; int yl[8]={1,-1,0,0,-1,1,1,-1}; void dfs(int x,int y) { for(int i=0;i<8;i++) { int xs=x+xl[i],ys=y+yl[i]; if(xs>=0 && xs<n && ys>=0 && ys<m && !vis[xs][ys] && a[xs][ys]=='#') { vis[xs][ys]=1; dfs(xs,ys); } } } int main() { cin>>n>>m; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>a[i][j]; vis[i][j]=0; } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(!vis[i][j] && a[i][j]=='#') { vis[i][j]=1; ans++; dfs(i,j); } } } cout<<ans; return 0; }
- 1
Information
- ID
- 1055
- Time
- 1000ms
- Memory
- 512MiB
- Difficulty
- 8
- Tags
- # Submissions
- 148
- Accepted
- 22
- Uploaded By