博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[网络流24题-8]汽车加油行驶问题
阅读量:6905 次
发布时间:2019-06-27

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

分层图最短路(板子题?总之我不会)

看着就很MFMC但是实际上并不是QAQ

看题解第一句话分层就懂了QAQ

大概就是对于一个平面图有多种情况互相转移,那么我们可以对图进行分层

比如说这个题显然可以用油量进行分层

对于几个限制

1.k条边在建图的时候就是油量-1连边就可以了

2.b在建图的同时也可以直接连边

3.加油点的所有出边必须是从油量为k连出去 枚举f(0~k-1)连到这个点的k(相当于加满油)边权为c

4.建油站直接枚举f的时候边权是a+c即可

直接上dij或spfa即可(但是spfa他死了)

附代码。

#include
#include
#include
#include
#include
#define inf 20021225#define ll long long#define mxn 10001using namespace std;struct edge{int to,lt,v;}e[1000001];struct node{ int x,dis; node(){} node(int _x,int _dis){x=_x,dis=_dis;}};bool operator <(node a,node b){return a.dis>b.dis;}priority_queue
que;bool vis[1000001];int in[1000001],n,k,cnt,dis[1000001],a,b,c;void add(int x,int y,int v){e[++cnt].to=y;e[cnt].lt=in[x];e[cnt].v=v;in[x]=cnt;}int id(int x,int y,int f){return f*n*n+n*(x-1)+y;}int dij(){ memset(dis,48,sizeof(dis)); dis[id(1,1,k)]=0;//printf("%d\n",id(1,1,k)); que.push(node(id(1,1,k),0)); /**printf("QAQ");*/ while(!que.empty()) { node cur=que.top();que.pop(); if(vis[cur.x]) continue; vis[cur.x]=1;int tmp=dis[cur.x]; for(int i=in[cur.x];i;i=e[i].lt) { int y=e[i].to; if(dis[y]>tmp+e[i].v) { dis[y]=tmp+e[i].v; que.push(node(y,dis[y])); } } } int ans=inf; for(int i=0;i<=k;i++) //{ ans=min(ans,dis[id(n,n,i)]); //printf("%d %d\n",i,dis[id(n,n,i)]); //} return ans;}int mp[101][101];int xx[4]={1,-1,0,0},yy[4]={0,0,1,-1};int main(){ scanf("%d%d%d%d%d",&n,&k,&a,&b,&c); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&mp[i][j]); for(int x=1;x<=n;x++) for(int y=1;y<=n;y++) { int cc=mp[x][y]?0:c; for(int f=0;f
n||dy>n) continue; if(mp[x][y]) add(id(x,y,k),id(dx,dy,k-1),tmp*b); else for(int f=1;f<=k;f++) add(id(x,y,f),id(dx,dy,f-1),tmp*b); } } printf("%d\n",dij()); return 0;}

 

转载于:https://www.cnblogs.com/hanyuweining/p/10321957.html

你可能感兴趣的文章
linux下php调用root权限实现方案
查看>>
5.Spring Cloud初相识-------Hystrix熔断器
查看>>
CSS3设置Table奇数行和偶数行样式
查看>>
PHP版本过狗Shell
查看>>
BZOJ 2127 happiness ——网络流
查看>>
N皇后问题
查看>>
JavaScript检测数据类型
查看>>
观察者模式
查看>>
《CLR via C#》读书笔记 之 类型基础
查看>>
EXt js 学习笔记总结
查看>>
Vue---父子组件之间的通信
查看>>
第八章:手工建库
查看>>
JavaScript语法
查看>>
js事件浏览器兼容
查看>>
获取贴吧对应页html及写入文件
查看>>
Entity Framework学习初级篇3--LINQ TO Entities
查看>>
android 相对布局
查看>>
SilverLight商业应用程序开发---学习笔记(9)
查看>>
MS DTC 无法正确处理DC升级/降级事件。MS DTC 将继续运行并使用现有的安全设置。...
查看>>
CAN总线基础
查看>>