POJ 3037 SPFA
2016-10-28 09:30
375 查看
题意:
思路:
我们可以发现 到每个点的速度是一样的 那这就成水题了….
裸的SPFA跑一哈 搞定
//By SiriusRen #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int v,n,m,map[105][105],xx[]={1,-1,0,0},yy[]={0,0,1,-1},inq[105][105]; double dis[105][105]; struct Node{int x,y;}jy; void spfa(){ queue<Node>q;jy.x=1,jy.y=1; q.push(jy),dis[1][1]=0; while(!q.empty()){ Node t=q.front();q.pop(); inq[t.x][t.y]=0; for(int i=0;i<4;i++){ int dx=t.x+xx[i],dy=t.y+yy[i]; if(dx<=0||dy<=0||dx>n||dy>m)continue; double w=1.0/(v*pow(2,1.0*(map[1][1]-map[t.x][t.y]))); if(dis[dx][dy]>dis[t.x][t.y]+w){ dis[dx][dy]=dis[t.x][t.y]+w; if(!inq[dx][dy]){ inq[dx][dy]=1; jy.x=dx,jy.y=dy; q.push(jy); } } } } } int main(){ scanf("%d%d%d",&v,&n,&m); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ scanf("%d",&map[i][j]); dis[i][j]=2147483647*100000.0; } } spfa(); printf("%.2lf\n",dis [m]); }
相关文章推荐
- POJ 3037 Skiing (搜索 或 spfa)
- POJ 3037 Skiing(如何使用SPFA求解二维最短路问题)
- POJ 3037 SPFA
- poj 3037 Skiing 最短路spfa
- poj 3037 Skiing(BFS+heap or spfa)
- POJ 3159 Candies [差分约束系统 SPFA+STACK]
- poj 1511(SPFA+邻接表)
- poj Invitation Cards(spfa)
- POJ2240_SPFA判断负环,Floyd也可以做(计算最大汇率,当自己到自己的最大汇率大于1时成立)
- POJ 1860 SPFA
- 图论基础SPFA:poj3268模板题
- POJ 1511 Invitation Cards(SPFA)
- [POJ 1797]Heavy Transportation[SPFA]
- POJ 1511 spfa求最短回路
- Poj 1860 Currency Exchange(Bellman-Ford,SPFA解单源最短路径问题)
- poj 昂贵的聘礼(spfa)(枚举)
- poj 3268 Silver Cow Party , spfa , dijkstra
- poj 4046 Sightseeing 枚举思想在spfa中的应用
- POJ 1860——Currency Exchange——————【最短路、SPFA判正环】
- POJ 2449 第K短路 SPFA+A*