2 条题解
-
0
#include<bits/stdc++.h> using namespace std; int dx[4]={-1,1,0,0}; int dy[4]={0,0,1,-1}; struct node{int x,y,t;}; int a[110][110],s[11100],n,m; bool v[110][110]; int main() { scanf("%d%d",&n,&m); memset(v,0,sizeof(v)); for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&a[i][j]),v[i][j]=a[i][j]; int stx,sty;scanf("%d%d",&stx,&sty); memset(s,0,sizeof(s)); if(a[stx][sty]==0)return 0; queue<node> Q; Q.push(node{stx,sty,1});s[1]++;s[1+a[stx][sty]]--; v[stx][sty]=0; while(!Q.empty()) { for(int i=0;i<=3;i++) { node no=Q.front(); no.x+=dx[i],no.y+=dy[i]; if(no.x>=1&&no.x<=n&&no.y>=1&&no.y<=m) if(v[no.x][no.y]==1) { v[no.x][no.y]=0;no.t++; Q.push(no); s[no.t]++;s[no.t+a[no.x][no.y]]--; } } Q.pop(); } for(int i=1;i<=n*m+10;i++)s[i]=s[i-1]+s[i]; int maxt=n*m+10;while(s[maxt]==0)maxt--; for(int i=1;i<=maxt;i++)printf("%d\n",s[i]); return 0; } -
0
#include<bits/stdc++.h> using namespace std; int dx[4]={-1,1,0,0}; int dy[4]={0,0,1,-1}; struct node{int x,y,t;}; int a[110][110],s[11100],n,m; bool v[110][110];int main() { scanf("%d%d",&n,&m); memset(v,0,sizeof(v)); for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&a[i][j]),v[i][j]=a[i][j]; int stx,sty;scanf("%d%d",&stx,&sty); memset(s,0,sizeof(s)); if(a[stx][sty]==0)return 0; queue<node> Q; Q.push(node{stx,sty,1});s[1]++;s[1+a[stx][sty]]--; v[stx][sty]=0; while(!Q.empty()) { for(int i=0;i<=3;i++) { node no=Q.front(); no.x+=dx[i],no.y+=dy[i]; if(no.x>=1&&no.x<=n&&no.y>=1&&no.y<=m) if(v[no.x][no.y]==1) { v[no.x][no.y]=0;no.t++; Q.push(no); s[no.t]++;s[no.t+a[no.x][no.y]]--; } } Q.pop(); } for(int i=1;i<=nm+10;i++)s[i]=s[i-1]+s[i]; int maxt=nm+10;while(s[maxt]==0)maxt--; for(int i=1;i<=maxt;i++)printf("%d\n",s[i]); return 0; }
</p>
- 1
信息
- ID
- 698
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 33
- 已通过
- 8
- 上传者