我的一直90%,调了50分钟一直90%。。。块疯了都。。。
#include<iostream>
#include<vector>
using namespace std;

void spread(vector<vector<int> > & island , int y , int x) {
//    cout<<x<<" "<<y;
    island[y][x] = 2;
    if(y-1>=0 && 1 == island[y-1][x]) spread(island, y-1 , x);
    if(y+1<island.size() && 1 == island[y+1][x]) spread(island, y+1 , x);
    if(x-1>=0 && 1 == island[y][x-1]) spread(island, y , x-1);
    if(x+1<island[0].size() && 1 == island[y][x+1]) spread(island, y , x+1);
}

int main() {
    int n , m;
    cin>>n>>m;
    vector<vector<int> > island(n, vector<int>(m));
    char temp;
    for(int i = 0 ; i < n ; i++) {
        for(int j = 0 ; j < m ; j++) {
            cin>>temp;
            if('0' == temp) island[i][j] = 0;
            else if('1' == temp) island[i][j] = 1;
            else{
                cout<<0<<endl;
                return 0;
            }
        }
    }
    int result = 0;
    for(int i = 0 ; i < n ; i++) {
        for(int j = 0 ; j < m ; j++) {
            if(1 != island[i][j])continue;
            result++;
            spread(island,i,j);
        }
    }
    cout<<result<<endl;
    return 0;
}