为什么输出-1呢???

P2895 [USACO08FEB] Meteor Shower S

Xxzxx @ 2018-05-18 23:05:54

只输出-1啊!!!!

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define inf 2147483647
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}},n,x,y,t,map[310][310],flag[310][310];
struct node{int x,y,dep;}q[50010];
void bfs()
{
    int f=-1,r=0;
    q[0].x=0;
    q[0].y=0;
    q[0].dep=0;
    flag[0][0]=1;
    if(map[0][0]==inf){cout<<0;return;}
    while(f<r)
    {
        //cout<<f<<" "<<r<<endl;
        node temp=q[++f];
        for(int i=0;i<4;i++)
        {
            int nx=temp.x+dir[i][0],ny=temp.y+dir[i][1];
            if(flag[nx][ny]==0||nx<0||ny<0||temp.dep+1>=map[nx][ny]) continue;
            if(map[nx][ny]==inf)
            {cout<<temp.dep;
                return;
            }
                q[++r].dep=temp.dep+1;
                q[r].x=nx;
                q[r].y=ny;
                flag[nx][ny]=1;
        }
    }
    cout<<-1;
}
int main()
{
    for(int i=0;i<=303;i++)
        for(int j=0;j<=303;j++)
            map[i][j]=inf;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x>>y>>t;
        map[x][y]=min(map[x][y],t);
        for(int j=0;j<4;j++)
        {
            int nx=x+dir[j][0],ny=y+dir[j][1];
            if(nx>0&&ny>0)
            map[nx][ny]=min(map[nx][ny],t);
        }
    }
    bfs();
    return 0;
}

by WSEDSWZD @ 2018-05-18 23:07:31

这么晚了不睡觉干啥呢


by WSEDSWZD @ 2018-05-18 23:09:21

把数组开到500试一下呢


by WSEDSWZD @ 2018-05-18 23:11:12

你写的这是什么鬼啊,flag数组那里写反了呀


by Xxzxx @ 2018-05-18 23:21:15

此贴终结


by Xxzxx @ 2018-05-18 23:22:45

楼主手残……@WA自动机


|