#include<bits/stdc++.h>
using namespace std;
const int N=5e3+5;
set<string>S;
bool vis[N][N];
int mp[N][N];
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int n,m;
string s="c";
void dfs(int x,int y){
for(int i=0;i<4;i++){
int u=x+dx[i],v=y+dy[i];
if(u<0||u>n||v<0||v>m||vis[u][v]||mp[x][y]!=mp[u][v])continue;
vis[u][v]=1;
s+=(i+'0');
dfs(u,v);
}
}
signed main(){
ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){
cin>>mp[i][j];
}
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){
if(!vis[i][j]){
vis[i][j]=1;
s="c";
dfs(i,j);
S.insert(s);
// cout<<s<<endl;
}
}
cout<<S.size();
return 0;
}
不知道哪错了,求解决.