您的位置:首页 > 其它

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

2017-06-06 08:03 357 查看
从起点开始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

;
int f

;
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

;
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
[m]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: