P2199 最后的迷宫

Miku

对于每一个数据,扩展哪些点能看见奖杯,然后bfs寻找

#include<iostream>
#include<queue>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
struct xy{
    int x;
    int y;
    int t;
};
queue <xy> q;
int vis[1001][1010];
char ma[1010][1010];
int mx[9]={0,1,1,1,0,-1,-1,-1};
int my[9]={1,1,0,-1,-1,-1,0,1};
int mx1[5]={0,1,0,-1};
int my1[5]={1,0,-1,0};
int n,m;
int xx,yy,xxx,yyy;
int f;
int cnt;
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j)
        cin>>ma[i][j];
    }
    while(scanf("%d%d%d%d",&xx,&yy,&xxx,&yyy)){
        cnt++;
        if(!xx&&!yy&&!xxx&&!yyy){
            return 0;
        }
        f=0;
        vis[xx][yy]=cnt*2;
        for(int i=0;i<=7;++i){
            int u=xx+mx[i];
            int v=yy+my[i];
            while(ma[u][v]=='O'){
                vis[u][v]=cnt*2;;
                u+=mx[i];
                v+=my[i];
            }
        }
        if(vis[xxx][yyy]==cnt*2){
            cout<<0<<endl;
            continue;
        }
        while(!q.empty())
            q.pop();
        q.push(xy{xxx,yyy,0});
        while(!q.empty()){
            int u=q.front().x;
            int v=q.front().y;
            int ut=q.front().t;
            q.pop();
            for(int i=0;i<=3;++i){
                int u1=u+mx1[i];
                int v1=v+my1[i];
                if(vis[u1][v1]==cnt*2-1)
                continue; 
                if(vis[u1][v1]==cnt*2){
                    f=1;
                    cout<<ut+1<<endl;
                    break;
                }
                if(ma[u1][v1]=='O'){
                    vis[u1][v1]=cnt*2-1;
                    q.push((xy){u1,v1,ut+1});
                }   
            }
            if(f){
                    break;
            }
        }
        if(!f){
            printf("Poor Harryn");
        }   
    }
    return 0;
} 
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇