血色先锋队
P1332 血色先锋队 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题意就是给你很多个源头,看看每个领主传播到的最少时间
标准的多源bfs,只想说y总yyds!
#include<iostream> #include<queue> #include<cstring> using namespace std; typedef pair<int,int> PAII; const int N=1010; int d[N][N]; int n,m,a,b; int dx[4]={0,0,1,-1}; int dy[4]={1,-1,0,0}; int main(){ queue<PAII> q; memset(d,-1,sizeof(d)); cin>>n>>m>>a>>b; for(int i=1;i<=a;i++) { int x,y; cin>>x>>y; q.push({x,y}); d[x][y]=0; } while(q.size()) { auto t=q.front(); q.pop(); int a=t.first,b=t.second; for(int i=0;i<4;i++) { int xx=a+dx[i]; int yy=b+dy[i]; if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&d[xx][yy]==-1) { q.push({xx,yy}); d[xx][yy]=d[a][b]+1; } } } for(int i=1;i<=b;i++) { int x,y; cin>>x>>y; cout<<d[x][y]<<endl; } return 0; }
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号