#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e5+;
const ll inf=1e17;
struct node
{
ll dis;
int num,pos;
node() {}
node(ll dis,int num,int pos):dis(dis),num(num),pos(pos) {}
bool operator< (const node& a)const
{
return dis>a.dis;
}
};
struct edge
{
int to,next;
ll z;
} e[maxn*];//双边,无向图,所以乘以2
int head[maxn],cnt;
void add(int x,int y,ll w)// w边值
{
e[cnt].to=y;
e[cnt].z=w;
e[cnt].next=head[x];
head[x]=cnt++;
}
ll dist[maxn][],vis[maxn][]; int n,m,k;
void dijkstra()
{
priority_queue<node>Q;//优先队列
Q.push(node(,,));
while(!Q.empty())
{
node v=Q.top();
Q.pop();
if(vis[v.pos][v.num])
continue;
vis[v.pos][v.num]=;
for(int i=head[v.pos]; ~i; i=e[i].next)
{
int ne=e[i].to;
if(dist[ne][v.num]>v.dis+e[i].z)
{
dist[ne][v.num]=v.dis+e[i].z;
Q.push(node(dist[ne][v.num],v.num,ne));
}
if(v.num<k && v.dis<dist[ne][v.num+])
{
dist[ne][v.num+]=v.dis;
Q.push(node(v.dis,v.num+,ne));
}
}
}
}
void init()//初始化图,有点之间距离为无穷,每个点的标志初始为0,边的条数cnt初始为0
{
for(int i=; i<maxn; i++)
{
head[i]=-;
for(int j=; j<=; j++)
dist[i][j]=inf,vis[i][j]=;
}
cnt=;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&m,&k);
int x,y;
ll z;
init();
for(int i=; i<=m; i++)
{
scanf("%d%d%lld",&x,&y,&z);
add(x,y,z);
}
dist[][]=;
dijkstra();
ll ans=inf;
for(int i=; i<=k; i++)
ans=min(ans,dist[n][i]);
printf("%lld\n",ans); }
return ;
}

参看原博客:https://blog.csdn.net/tianyizhicheng/article/month/2018/09

Dijkstra+优先队列 模板的更多相关文章

  1. (模板)poj2387(dijkstra+优先队列优化模板题)

    题目链接:https://vjudge.net/problem/POJ-2387 题意:给n个点(<=1000),m条边(<=2000),求结点n到结点1的最短路. 思路:dijkstra ...

  2. 地铁 Dijkstra(优先队列优化) 湖南省第12届省赛

    传送门:地铁 思路:拆点,最短路:拆点比较复杂,所以对边进行最短路,spfa会tle,所以改用Dijkstra(优先队列优化) 模板 /******************************** ...

  3. POJ 1511 - Invitation Cards (dijkstra优先队列)

    题目链接:http://poj.org/problem?id=1511 就是求从起点到其他点的最短距离加上其他点到起点的最短距离的和 , 注意路是单向的. 因为点和边很多, 所以用dijkstra优先 ...

  4. 最短路径---dijkstra算法模板

    dijkstra算法模板 http://acm.hdu.edu.cn/showproblem.php?pid=1874 #include<stdio.h> #include<stri ...

  5. 【bzo1579】拆点+dijkstra优先队列优化+其他优化

    题意: n个点,m条边,问从1走到n的最短路,其中有K次机会可以让一条路的权值变成0.1≤N≤10000;1≤M≤500000;1≤K≤20 题解: 拆点,一个点拆成K个,分别表示到了这个点时还有多少 ...

  6. 【poj 1724】 ROADS 最短路(dijkstra+优先队列)

    ROADS Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12436 Accepted: 4591 Description N ...

  7. POJ-数据结构-优先队列模板

    优先队列模板 优先队列是用堆实现的,所以优先队列中的push().pop()操作的时间复杂度都是O(nlogn). 优先队列的初始化需要三个参数,元素类型.容器类型.比较算子. 需要熟悉的优先队列操作 ...

  8. 图的最短路径算法Dijkstra算法模板

    Dijkstra算法:伪代码 //G为图,一般设为全局变量,数组d[u]为原点到达个点的额最短路径, s为起点 Dijkstra(G, d[u], s){ 初始化: for (循环n次){ u = 是 ...

  9. poj 1511-- Invitation Cards (dijkstra+优先队列)

    刚开始想复杂了,一直做不出来,,,其实就是两遍dijkstra+优先队列(其实就是板子题,只要能有个好的板子,剩下的都不是事),做出来感觉好简单...... 题意:有n个车站和n个志愿者,早上每个志愿 ...

随机推荐

  1. 一条常用的 Sql

    select  *   from  table  where  条件1 .... group  by  字段......  Having  条件1.....Limit 0,10; 1. 根据where ...

  2. 从零开始的Python学习Episode 14——日志操作

    日志操作 一.logging模块 %(message)s 日志信息 %(levelno)s 日志级别 datefmt 设置时间格式 filename 设置日志保存的路径 level 设置日志记录的级别 ...

  3. Go Web 使用工具

    前端工具: sublime text3 下载:https://www.sublimetext.com/3 中文版设置:https://jingyan.baidu.com/article/9c69d48 ...

  4. 将python自动转换为.exe文件

    使用py2exe包进行转换.py2exe怎么装的可以网上另查.时间久了,记不太清了...... 这个程序可以把自己进行转换.但是没法运行....其实只要是需要修改自身的程序打包后都没法运行. # -* ...

  5. 动手打造轻量web服务器(二)路由

    tomcat启动慢?自己动手打造轻量web服务器(一) 上篇讲了怎么做一个最简单的web服务器,这篇就是在上篇加上URL路由功能(什么是路由?) 首先,根据http获得请求行 val scanner ...

  6. pentestbox更新msf

    pentestbox成功升级msf 1.  输入 msfupdate 进行软件更新 2.  在[*] Updating gems...,软件报错,提示找不到文件路径,输入以下两条命令,尝试单独安装 g ...

  7. 20155230 2016-2017-2《Java程序设计》第一周学习总结

    第一周学习总结 考核方式 100分构成 翻转课堂考核12次(5*12 = 60):每次考试20-30道题目,考试成绩规格化成5分(比如总分20分就除以4) 注意:不轮什么原因,缺考没有补考机会,但有做 ...

  8. 20155316 实验二《Java面向对象程序设计》实验报告

    实验1 实验内容 参考 博客 完成单元测试的学习 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号 本提交点考查JUnit会不会使用,测 ...

  9. QT-2D编程

    QT-[转]2D编程 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕上和绘图·设备上进行绘制,主要基于QPainter.QPainterDevice和QPainterEngine这3个类. ...

  10. day 9 追踪一个蓝色的物体

    # -*- coding: utf- -*- import cv2 import numpy as np #.打开摄像头 cap=cv2.VideoCapture('output.avi') ): # ...