其他情况表示既不是0也不是1.
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define LL long long
int e[105][105],n,m;
int fx[4][2]={1,0,-1,0,0,1,0,-1};
int d1,d2,d3,d4,N1,N2;
void dfs(int x,int y)
{
e[x][y]=2;
for(int i=0;i<4;++i)
{
int dx=x+fx[i][0];
int dy=y+fx[i][1];
if(dx<d1||dy<d2||dx>d3||dy>d4||e[dx][dy]==N1||e[dx][dy]==N2) continue;
dfs(dx,dy);
}
}
int main()
{
int i,j,k;
// freopen("in.txt","r",stdin);
while(cin>>n>>m){memset(e,0,sizeof(e));
char x;
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j){
cin>>x;
e[i][j]=x-‘0‘;
}
}
int s=1,s2=0;
d1=0,d2=0,d3=n+1,d4=m+1;
N1=1;N2=2;
dfs(0,0);
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(e[i][j]==0) {dfs(i,j);s++;}
N1=2;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(e[i][j]==1) {dfs(i,j);s2++;}
if(s==2&&s2==1) puts("0");
else if(s==1&&s2==1) puts("1");
else puts("-1");
}
return 0;
}