2 solutions
-
1
#include<iostream> #include<string> using namespace std; int x[8]={-1,1,0,0,1,-1,-1,1}; int y[8]={0,0,-1,1,1,-1,1,-1}; char a[1000][1000]; int us[1000][1000],n,m,ans=0; void dfs(int q,int w) { us[q][w]=1; for(int i=0;i<8;i++) { if(q+x[i]>=0 && q+x[i]<n && w+y[i]>=0 && w+y[i]<m && us[q+x[i]][w+y[i]]==0 && a[q+x[i]][w+y[i]]=='W') { dfs(q+x[i],w+y[i]); } } } int main() { string s; cin>>n>>m; for(int i=0;i<n;i++) { cin>>s; for(int j=0;j<m;j++) { us[i][j]=0; a[i][j]=s[j]; } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(us[i][j]==0 && a[i][j]=='W') { ans++; dfs(i,j); } } } cout<<ans; return 0; }
-
0
#include<iostream> #include<string> using namespace std; int x[8]={-1,1,0,0,1,-1,-1,1}; int y[8]={0,0,-1,1,1,-1,1,-1}; char a[1000][1000]; int us[1000][1000],n,m,ans=0; void dfs(int q,int w) { us[q][w]=1; for(int i=0;i<8;i++) { if(q+x[i]>=0 && q+x[i]<n && w+y[i]>=0 && w+y[i]<m && us[q+x[i]][w+y[i]]==0 && a[q+x[i]][w+y[i]]=='W') { dfs(q+x[i],w+y[i]); } } } int main() { string s; cin>>n>>m; for(int i=0;i<n;i++) { cin>>s; for(int j=0;j<m;j++) { us[i][j]=0; a[i][j]=s[j]; } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(us[i][j]==0 && a[i][j]=='W') { ans++; dfs(i,j); } } } cout<<ans; return 0; }
- 1
Information
- ID
- 734
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 10
- Tags
- # Submissions
- 4
- Accepted
- 3
- Uploaded By