1 solutions
-
0
C++ :
#include<iostream> #include<queue> #include<cstdio> #define maxn 701 using namespace std; int n,sum=0; int a[maxn][maxn]; int x[8]={0,0,1,1,1,-1,-1,-1}, y[8]={1,-1,-1,0,1,-1,0,1}; void work(int,int); string s; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>s; for(int j=0;j<n;j++) a[i][j+1]=s[j]-48; } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[i][j]==1) { work(i,j); sum++; } } } cout<<sum; return 0; } void work(int i,int j) { queue<int> qi,qj; qi.push(i); qj.push(j); a[i][j]=0; while(!qi.empty()) { int ki=qi.front(),kj=qj.front(); for(int i=0;i<8;i++) { int kx=ki+x[i],ky=kj+y[i]; if(kx>=1&&kx<=n&&ky>=1&&ky<=n) { if(a[kx][ky]==1) { a[kx][ky]=0; qi.push(kx); qj.push(ky); } } } qi.pop(); qj.pop(); } }
- 1
Information
- ID
- 10010
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By