时间限制: 1000 ms 空间限制: 131072 KB 具体限制
1 #include <bits/stdc++.h> 2 using namespace std; 3 int n,m; 4 char a[53][53]; 5 bool bj[53][53]; 6 int xi[]={0,0,-1,1}; 7 int yi[]={1,-1,0,0}; 8 void dfs(int x,int y) 9 { 10 bj[x][y]=true; 11 for(int i=0;i<4;i++) 12 { 13 int x1=x+xi[i]; 14 int y1=y+yi[i]; 15 if(x1<=n && x1>0 && y1<=m && y1>0 && bj[x1][y1]==false && a[x1][y1]>=a[x][y]){ 16 dfs(x1,y1); 17 } 18 }} 19 int main() 20 { 21 int k=0; 22 cin>>k; 23 while(k--) 24 { 25 memset(bj,false,sizeof bj); 26 cin>>n>>m; 27 for(int i=1;i<=n;i++) 28 { 29 for(int j=1;j<=m;j++) 30 cin>>a[i][j]; 31 } 32 int ans=0; 33 for(char c='a';c<='z';c++){ 34 for(int i=1;i<=n;i++){ 35 for(int j=1;j<=m;j++){ 36 if(bj[i][j]==false && a[i][j]==c) 37 { 38 dfs(i,j); 39 ans++; 40 } 41 } 42 } 43 } 44 cout<<ans<<endl; 45 } 46 }