FZU 2150 Fire Game

来源:互联网 发布:捕鱼软件破解 编辑:程序博客网 时间:2024/06/11 02:51

Hentai….也是醉了
简单的bfs。。

#include<stdio.h>#include<string.h>char map[21][11];int queue[100100];int move[4][2]={{1,0},{-1,0},{0,1},{0,-1}};int way[11][11];int n,m;int min(int g,int h){    return g>h?h:g;}int max(int g,int h){    return g<h?h:g;}int bfs(int x1,int y1,int x2,int y2){    int front=0;    int end=0;    memset(way,0x3f3f3f3f,sizeof(way));    queue[end++]=x1;    queue[end++]=y1;    queue[end++]=x2;    queue[end++]=y2;    way[x1][y1]=0;    way[x2][y2]=0;    while(front!=end)    {        int oldx=queue[front++];        int oldy=queue[front++];        for(int i=0;i<4;i++)        {            int newx=oldx+move[i][0];            int newy=oldy+move[i][1];            if(newx>=0&&newx<n&&newy>=0&&newy<m)                if(map[newx][newy]=='#'&&(way[newx][newy]>way[oldx][oldy]+1))                {                    way[newx][newy]=way[oldx][oldy]+1;                    queue[end++]=newx;                    queue[end++]=newy;                }        }    }    int max1=0;    for(int i=0;i<n;i++)        for(int j=0;j<m;j++)        {            if(map[i][j]=='#')            {                max1=max(max1,way[i][j]);            }        }    return max1;}int main(){    int T,ii;    scanf("%d",&T);    for(ii=1;ii<=T;ii++)    {        int ans=0x3f3f3f3f;        scanf("%d%d",&n,&m);        int i,j;        for(i=0;i<n;i++)            scanf("%s",map[i]);        for(i=0;i<n;i++)            for(j=0;j<m;j++)            {                if(map[i][j]=='#')                {                    int i1,j1;                    for(i1=i;i1<n;i1++)                        {                            if(i1==i)                            {                                j1==j+1;                            }//还可以用i+j<=i1+j1判断                            for(j1=0;j1<m;j1++)                            {                                if(map[i1][j1]=='#')                                {                                    int test=bfs(i,j,i1,j1);                                        ans=min(ans,test);                                }                            }                        }                }            }        printf("Case %d: ",ii);        if(ans==0x3f3f3f3f)            printf("-1\n");        else            printf("%d\n",ans);    }    return 0;}
0 0
原创粉丝点击