[BZOJ4992] [Usaco2017 Feb]Why Did the Cow Cross the Road(spfa)
传送门
把每个点和曼哈顿距离距离它3步或1步的点连一条边,边权为3 * t + a[x][y]
因为,走3步,有可能是3步,也有可能是1步(其中一步拐了回来)
最后,把终点和曼哈顿距离距离它1步和2布的点连一条边,边权为 步数 * t
跑一边spfa即可
#include <queue>#include <cstdio>#include <cstring>#include <iostream>#define N 1000001#define idx(i, j) ((i 1) * n + j)using namespace std;int n, t, cnt;int a[101][101], d[4][N][2], tot[4];int head[N], to[N], next[N], val[N], dis[N];bool vis[N];queue <int> q;inline int read()inline void add(int x, int y, int z)inline void spfa()}}}}int main()memset(head, 1, sizeof(head));for(i = 1; i <= n; i++)for(j = 1; j <= n; j++)a[i][j] = read();for(i = 1; i <= n; i++)for(j = 1; j <= n; j++)for(l = 1; l <= 3; l += 2)for(k = 1; k <= tot[l]; k++)for(i = 1; i <= 2; i++)for(j = 1; j <= tot[i]; j++)spfa();printf("%d\n", dis[n * n]);return 0;}
上一篇:[BZOJ1594] [Usaco2008 Jan]猜数游戏(二分 + 并查集)
下一篇:[BZOJ1595] [Usaco2008 Jan]人工湖(单调栈)
spfa 最短路
spc文件怎么看,spc文件用什么打开?
0文件怎么看,0文件用什么打开?
sparseimage文件怎么看,sparseimage文件用什么打开?
sp文件怎么看,sp文件用什么打开?
dv文件怎么看,dv文件用什么打开?
soundpack文件怎么看,soundpack文件用什么打开?
dus文件怎么看,dus文件用什么打开?
dtw文件怎么看,dtw文件用什么打开?
spdf文件怎么看,spdf文件用什么打开?
0文件怎么看,0文件用什么打开?