博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【网络流24题】汽车加油行驶问题(最短路)
阅读量:5160 次
发布时间:2019-06-13

本文共 1755 字,大约阅读时间需要 5 分钟。

【网络流24题】汽车加油行驶问题(最短路)

题面

题解

还是SPFA呀。。。

把剩余的油量直接压进状态里面就好
额外加一个原地加油的决策就行

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define MAX 120inline int read(){ int x=0,t=1;char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-')t=-1,ch=getchar(); while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar(); return x*t;}struct Line{ int v,next,w;}e[MAX*MAX*MAX];int h[MAX*MAX],cnt=1,tot;int m[MAX*MAX],g[MAX][MAX],n,K,A,B,C;bool vis[MAX*MAX][15];inline void Add(int u,int v,int w){ e[cnt]=(Line){v,h[u],w};h[u]=cnt++;}int dis[MAX*MAX][15];void SPFA(){ memset(dis,63,sizeof(dis)); dis[g[1][1]][K]=0; queue
Q,Q1; Q.push(g[1][1]);Q1.push(K); while(!Q.empty()) { int u=Q.front(),t=Q1.front(); Q.pop();Q1.pop(); if(t!=0) { for(int i=h[u];i;i=e[i].next) { int v=e[i].v,gg=t-1,Dis=dis[u][t]+e[i].w; if(m[v])gg=K,Dis+=A; if(dis[v][gg]>Dis) { dis[v][gg]=Dis; if(!vis[v][gg])vis[v][gg]=true,Q.push(v),Q1.push(gg); } } } int v=u,gg=K,Dis=dis[u][t]+C+A; if(dis[v][gg]>Dis) { dis[v][gg]=Dis; if(!vis[v][gg])vis[v][gg]=true,Q.push(v),Q1.push(gg); } vis[u][t]=false; }}int main(){ freopen("trav.in","r",stdin); freopen("trav.out","w",stdout); n=read();K=read();A=read();B=read();C=read(); for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) g[i][j]=++tot,m[g[i][j]]=read();; for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) { if(i!=n)Add(g[i][j],g[i+1][j],0); if(j!=n)Add(g[i][j],g[i][j+1],0); if(i!=1)Add(g[i][j],g[i-1][j],B); if(j!=1)Add(g[i][j],g[i][j-1],B); } SPFA(); int ans=1e9; for(int i=0;i<=K;++i)ans=min(ans,dis[g[n][n]][i]); printf("%d\n",ans); return 0;}

转载于:https://www.cnblogs.com/cjyyb/p/8193340.html

你可能感兴趣的文章
命令ord
查看>>
Sharepoint 2013搜索服务配置总结(实战)
查看>>
博客盈利请先考虑这七点
查看>>
使用 XMLBeans 进行编程
查看>>
写接口请求类型为get或post的时,参数定义的几种方式,如何用注解(原创)--雷锋...
查看>>
【OpenJ_Bailian - 2287】Tian Ji -- The Horse Racing (贪心)
查看>>
Java网络编程--socket服务器端与客户端讲解
查看>>
List_统计输入数值的各种值
查看>>
学习笔记-KMP算法
查看>>
Timer-triggered memory-to-memory DMA transfer demonstrator
查看>>
跨域问题整理
查看>>
[Linux]文件浏览
查看>>
64位主机64位oracle下装32位客户端ODAC(NFPACS版)
查看>>
获取国内随机IP的函数
查看>>
今天第一次写博客
查看>>
江城子·己亥年戊辰月丁丑日话凄凉
查看>>
IP V4 和 IP V6 初识
查看>>
Spring Mvc模式下Jquery Ajax 与后台交互操作
查看>>
(转)matlab练习程序(HOG方向梯度直方图)
查看>>
『Raid 平面最近点对』
查看>>