博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P2939 改造路
阅读量:6418 次
发布时间:2019-06-23

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


裸地分层图最短路

培训的时候考到过

但是……

我考试的时候写了个基本没有的树状数组优化。然后顺利的被卡到了70分(裸的spfa都有80分qwq)

伤心

然后今天又重新拿堆优化dij搞了一波。一发ac真开心qwq

#include
#include
#include
#include
#include
using std::min;using std::priority_queue;const int maxn=20100;int dis[maxn][21],head[maxn],tail;bool Get[maxn][21];int n,m,k;struct node{ int point; int weight; int nxt;};struct Data//优先队列使用的结构体{ int p,k; int val; Data (int a=0,int b=0,int c=0){ p=a,k=b,val=c; } bool operator < (const Data &A)const { return val>A.val; }};node line[101000];int read(){ int res=0;char c=getchar(); while(c>'9'||c<'0') c=getchar(); while(c>='0'&&c<='9') { res=res*10+c-'0'; c=getchar(); } return res;}void add(int x,int y,int z){ line[++tail].point=y; line[tail].nxt=head[x]; line[tail].weight=z; head[x]=tail;}void bfs(){ priority_queue
q; memset(dis,127,sizeof(dis)); dis[1][0]=0; q.push(Data(1,0,0));//起点 int tot=0; while(!q.empty()) { Data pas=q.top();q.pop(); //printf("\t%d\t%d\t%d\n",pas.p,pas.k,pas.val); while(Get[pas.p][pas.k])//这个状态已经到达了 { pas=q.top(); q.pop(); } int P=pas.p,K=pas.k; Get[P][K]=true; if(P==n)//终点状态 { printf("%d",pas.val); break; } for(int i=head[P];i;i=line[i].nxt) { int v=line[i].point; if(K+1<=k&&dis[v][K+1]>dis[P][K])//使用边权无效化 { dis[v][K+1]=dis[P][K]; Data nxt(v,K+1,dis[v][K+1]); q.push(nxt); } if(dis[v][K]>dis[P][K]+line[i].weight)//不消除边权 { dis[v][K]=dis[P][K]+line[i].weight; Data nxt(v,K,dis[v][K]); q.push(nxt); } } }}int main(){ //n=read(),m=read(),k=read(); scanf("%d%d%d",&n,&m,&k); int a,b,c; for(int i=1;i<=m;i++) { //int a=read(),b=read(),c=read(); scanf("%d%d%d",&a,&b,&c); add(a,b,c);add(b,a,c); } bfs();}/*5 6 11 2 21 3 42 4 33 4 13 5 64 5 2*/

转载于:https://www.cnblogs.com/Lance1ot/p/9818272.html

你可能感兴趣的文章
Hadoop 2.x HDFS新特性
查看>>
Linux下的Mongodb部署应用梳理
查看>>
RAID,mdadm(笔记)
查看>>
linux 文件系统sysvinit 流程分析
查看>>
ios使用xcode进行Archive打包上传出现的常见错误
查看>>
总结libevent安装方法
查看>>
js delete可以删除对象属性及变量
查看>>
若工作只能提供薪水,而让对你的未来无所助益
查看>>
C#语法文本字面量
查看>>
用Go自己实现配置文件热加载功能
查看>>
PermissionDialog【权限申请提示对话框】
查看>>
【单页应用】我们该如何处理框架弹出层层级关系?
查看>>
Leetcode: Clone Graph
查看>>
基础知识《三》java修饰符
查看>>
net.sf.json在处理json对象转换为普通java实体对象时的问题和解决方案
查看>>
线性回归与梯度下降
查看>>
【iCore3 双核心板_FPGA】实验二十:基于FIFO的ARM+FPGA数据存取实验
查看>>
java一个数分解的质因数java
查看>>
android framework-安装samba
查看>>
配置WCF的心得
查看>>