bzoj1668 [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富

来源:互联网 发布:qt程序员常用单词 编辑:程序博客网 时间:2024/05/29 06:33

从起点开始bfs,用bfs更新dp,然后就很水了= =

    #include<cstdio>    #include<cstring>    #include<algorithm>    #define fo(i,a,b) for(int i=a;i<=b;i++)    #define fd(i,a,b) for(int i=a;i>=b;i--)    using namespace std;    const int N=1e3+5;    int map[N][N];    int f[N][N];    int n,m;        const int dx[3]={-1,0,1};    const int dy[3]={1,1,1};    struct node    {        int x,y;    }q[N*N];    bool vis[N][N];    inline void bfs(int sx,int sy)    {        int t=0,w=1;        q[1].x=sx;        q[1].y=sy;        vis[sx][sy]=1;        f[sx][sy]=map[sx][sy];        while (t<w)        {            ++t;            fo(k,0,2)            {            int x=q[t].x+dx[k];            int y=q[t].y+dy[k];            if (x>=1&&x<=n&&y>=1&&y<=m)            {                f[x][y]=max(f[x][y],f[q[t].x][q[t].y]+map[x][y]);                if(!vis[x][y])q[++w].x=x,q[w].y=y,vis[x][y]=1;            }            }        }    }    int main()    {        scanf("%d%d",&n,&m);        fo(i,1,n)        {            fo(j,1,m)            scanf("%d",&map[i][j]);        }           bfs(1,1);        printf("%d\n",f[n][m]);    }
阅读全文
0 0
原创粉丝点击