博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3635 带花费的Dij+head优化
阅读量:6889 次
发布时间:2019-06-27

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

练习!!

这里主要需要注意的是进队的条件和dp[][]状态的控制,dp[i][j]表示到第i个城市剩余汽油为j的最小花费。

 

代码:

#include
#include
#include
#include
#define inf 100000000#define MAXN 1200#define MAXM 1200using namespace std;int head[MAXN],price[MAXN],dp[MAXN][120],vis[MAXN][120];int temp,n,m;struct Node{ int v,len,next;}edge[2*MAXN*10];struct Node1{ int d; int u; int cost; Node1(int x,int y,int z) { u=x; d=y; cost=z; } friend bool operator < (Node1 a,Node1 b) { return a.cost>b.cost; }};void addEdge(int x ,int y ,int c){ edge[temp].v=x; edge[temp].len=c; edge[temp].next=head[y]; head[y]=temp; temp++; edge[temp].v=y; edge[temp].len=c; edge[temp].next=head[x]; head[x]=temp; temp++;}priority_queue
que;int Dijstra(int s,int t,int c){ while(!que.empty())que.pop(); for(int i=0;i<=n;i++) { for(int j=0;j<=c;j++) { dp[i][j]=inf; } } memset(vis,0,sizeof(vis)); dp[s][0]=0; que.push(Node1(s,0,0)); while(!que.empty()) { Node1 b=que.top(); que.pop(); int u=b.u; int d=b.d; int cost=b.cost; vis[u][d]=1; if(u==t) return cost; if(d+1<=c&&!vis[u][d+1]&&dp[u][d+1]>dp[u][d]+price[u]) { dp[u][d+1]=dp[u][d]+price[u]; que.push(Node1(u,d+1,dp[u][d+1])); } for(int i=head[u];i!=-1;i=edge[i].next) { int v; v=edge[i].v; int len=edge[i].len; if(d>=len&&!vis[v][d-len]&&dp[v][d-len]>cost) { dp[v][d-len]=cost; que.push(Node1(v,d-len,cost)); } } } return -1;}int main(){while(scanf("%d%d",&n,&m)!=EOF){ for(int i=0;i

 

转载于:https://www.cnblogs.com/amourjun/p/5134134.html

你可能感兴趣的文章
新手安装postgreSQL后无法连接服务器
查看>>
递归和动态规划
查看>>
java实现简单的控制台管理系统
查看>>
建造模式
查看>>
BZOJ 4025: 二分图
查看>>
openNebula rgister img instance vms error collections
查看>>
error Infos
查看>>
PL/sql配置相关
查看>>
[New Portal]Windows Azure Virtual Machine (3) 在VM上挂载磁盘
查看>>
字体随着ProgressBar的加载而滚动
查看>>
Handler 机制再了解
查看>>
如果你是前端工程师,把你的网站或者你知道的网站加进来吧
查看>>
阿里云产品头条(2017年12月刊)
查看>>
探究SQL添加非聚集索引,性能提高几十倍之谜
查看>>
Java 如何不使用 volatile 和锁实现共享变量的同步操作
查看>>
关于ip_conntrack跟踪连接满导致网络丢包问题的分析
查看>>
烂泥:linux学习之VNC远程控制(一)
查看>>
如何解决Xshell使用时中文字体是躺倒显示的问题
查看>>
Scala函数的定义的几种写法
查看>>
【iphone应用开发】iphone 应用开发之二:UITextView控件的详细讲解
查看>>