您现在的位置是:主页 > news > php网站建设/加强网络暴力治理
php网站建设/加强网络暴力治理
admin2025/5/24 18:02:55【news】
简介php网站建设,加强网络暴力治理,微搭低代码平台,毕设做的网站可以用模板改吗题意:给出一个maze,从任意两点#同时开始覆盖,寻找覆盖所有#的最短时间,若不能全部覆盖,则输出-1。 思路:由于maze很小,10*10而已。枚举任意两个#做bfs就行。 <span style"font-size:14…
php网站建设,加强网络暴力治理,微搭低代码平台,毕设做的网站可以用模板改吗题意:给出一个maze,从任意两点#同时开始覆盖,寻找覆盖所有#的最短时间,若不能全部覆盖,则输出-1。
思路:由于maze很小,10*10而已。枚举任意两个#做bfs就行。 <span style"font-size:14…
题意:给出一个maze,从任意两点#同时开始覆盖,寻找覆盖所有#的最短时间,若不能全部覆盖,则输出-1。
思路:由于maze很小,10*10而已。枚举任意两个#做bfs就行。
<span style="font-size:14px;">#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;
int dirx[]={0,-1,1,0};
int diry[]={-1,0,0,1};
typedef struct Node{int x;int y;int step;Node(int xx,int yy,int ss){x=xx;y=yy;step=ss;}
}Node;
char a[30][30],maze[30][30];bool flag2;
queue <Node> que;
queue <Node> aim;
const int INF=0x3f3f3f3f;
int n,m;
int bfs(Node t){que.push(t);maze[t.x][t.y]='.';Node kk=que.front();maze[kk.x][kk.y]='.';while(1){Node q=que.front();if(flag2){aim.push(Node(q.x,q.y,1));}que.pop();for(int i=0;i<4;i++){int xx=q.x+dirx[i];int yy=q.y+diry[i];if(xx>=0&&xx<n&&yy>=0&&yy<m&&maze[xx][yy]=='#'){que.push(Node(xx,yy,q.step+1));maze[xx][yy]='.';}}if(que.empty()){for(int i=0;i<n;i++)for(int j=0;j<m;j++)if(maze[i][j]=='#')return INF;return q.step-1;}}
}
int main()
{int T;scanf("%d",&T);getchar();for(int ppp=1;ppp<=T;ppp++){scanf("%d %d",&n,&m);getchar();memset(a,0,sizeof(a));for(int i=0;i<n;i++)gets(a[i]);for(int i=0;i<=n;i++)for(int j=0;j<=m;j++)maze[i][j]=a[i][j];int lim=0;bool flag=1;flag2=1;int ans=-1;while(!que.empty()) que.pop();while(!aim.empty()) aim.pop();for(int i=0;i<n&&flag;i++){for(int j=0;j<m;j++){if(maze[i][j]=='#'){if(lim==2) {flag=0;break;}lim++;ans=max(bfs(Node(i,j,1)),ans);}}}cout<<"Case "<<ppp<<": ";if(flag){flag2=0;while(!aim.empty()){queue <Node> k=aim;while(!que.empty()) que.pop();while(!k.empty()){for(int i=0;i<=n;i++)for(int j=0;j<=m;j++)maze[i][j]=a[i][j];que.push(aim.front());ans=min(bfs(k.front()),ans);k.pop();}aim.pop();}cout<<ans<<endl;}elsecout<<-1<<endl;}
}</span>