求助87玄关
查看原帖
求助87玄关
830485
Verdammt_scheisse楼主2023/11/12 11:47
#include<bits/stdc++.h>
using namespace std;
int dx[4]={-1,0,1,0},
    dy[4]={0,1,0,-1};
int bz[100][100],num=0,n,m; 
void bfs(int p,int q)
{
   int x,y,t,w,i;
   int h[1000][2];
   num++;bz[p][q]=0;
   t=0;w=1;h[1][0]=p;h[1][1]=q; 
   do
    {
     t++;
     for (i=0;i<=3;i++)
      {
        x=h[t][0]+dx[i];
		y=h[t][1]+dy[i];
        if ((x>=0)&&(x<m)&&(y>=0)&&(y<n)&&(bz[x][y]))
         {
           w++;h[w][0]=x;h[w][1]=y;bz[x][y]=0;
         }
      }
    }while (t<w);   
}
int main()
{
   int i,j; 
   char s[100],ch;
   cin>>m>>n;
   for (i=0; i<=m-1;i++ )
     for (j=0;j<=n-1;j++ )
       bz[i][j]=1;      
   for (i=0;i<m;i++)
    {
       cin>>s; 
       for (j=0;j<=n-1;j++)
    		if (s[j]=='0') bz[i][j]=0;
    }
   for (i=0;i<=m-1;i++)
    for (j=0;j<=n-1;j++)
      if (bz[i][j])
        bfs(i,j);        
   cout<<num;
   return 0;
}

只有87分,最后一个TLE了

2023/11/12 11:47
加载中...