博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[2019.2.24]BZOJ2662 [BeiJing wc2012]冻结
阅读量:6463 次
发布时间:2019-06-23

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

同。

注意本题起点终点不是\(s,t\)而是\(1,n\),之前在不同层之间建立的权值为\(0\)的边权值改为\(w/2\)即可。

code:

#include
#define val(u,id) (n*(u)+id)using namespace std;struct node{ int d,mn; bool operator<(node y)const{ return mn==y.mn?d>y.d:mn>y.mn; }}td;struct edge{ int t,v,nxt;}e[210010];const int INF=1e9;int n,m,k,u,v,w,be[2600],cnt,mn[2600],vis[2600],ans=INF;priority_queue
pq;void add(int x,int y,int val){ e[++cnt].t=y,e[cnt].v=val,e[cnt].nxt=be[x],be[x]=cnt;}void Dijkstra(){ for(int i=0;i<=k;++i)for(int j=1;j<=n;++j)mn[val(i,j)]=INF; mn[1]=0,pq.push((node){1,0}); while(!pq.empty()){ while(!pq.empty()&&vis[(td=pq.top(),td.d)])pq.pop(); if(pq.empty())return; pq.pop(),vis[td.d]=1; for(int i=be[td.d];i;i=e[i].nxt)(mn[e[i].t]>mn[td.d]+e[i].v)?mn[e[i].t]=mn[td.d]+e[i].v,pq.push((node){e[i].t,mn[e[i].t]}),0:0; }}int main(){ scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=m;++i){ scanf("%d%d%d",&u,&v,&w); for(int j=0;j

转载于:https://www.cnblogs.com/xryjr233/p/BZOJ2662.html

你可能感兴趣的文章
.NET Framework3.0/3.5/4.0/4.5新增功能摘要
查看>>
php中表单提交复选框与下拉列表项
查看>>
熟悉常用的Linux操作
查看>>
WordPress 前端投稿/编辑发表文章插件 DJD Site Post(支持游客和已注册用户)汉化版 免费下载...
查看>>
C# 自定义事件整理项目 - EventDemo
查看>>
几何面积体积_2
查看>>
面象过程与面象对象
查看>>
用CSS实现图片水印效果代码
查看>>
谷歌设置支持webgl
查看>>
P3402 【模板】可持久化并查集
查看>>
js的AJAX请求有关知识总结
查看>>
Eclipse添加新server时无法选择Tomcat7的问题
查看>>
L207
查看>>
nginx 配置https 负载均衡
查看>>
双拓扑排序 HDOJ 5098 Smart Software Installer
查看>>
三分 POJ 2420 A Star not a Tree?
查看>>
36.Node.js 工具模块--OS模块系统操作
查看>>
存储过程报错行提示
查看>>
第一篇markdown博文
查看>>
Leetcode 4 - median-of-two-sorted-arrays
查看>>