1 条题解
-
0
思路
按天同步感染,阻挡格和第一天边界;可用分层BFS。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; int main(){int n,m;cin>>n;vector<string>a(n);for(auto &s:a)cin>>s;cin>>m;for(int d=1;d<m;d++){auto b=a;for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(a[i][j]=='@'){int di[]={1,-1,0,0},dj[]={0,0,1,-1};for(int z=0;z<4;z++){int x=i+di[z],y=j+dj[z];if(x>=0&&x<n&&y>=0&&y<n&&a[x][y]=='.')b[x][y]='@';}}a=b;}int ans=0;for(auto s:a)ans+=count(s.begin(),s.end(),'@');cout<<ans<<'\n';}
- 1