![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路
最短路算法的各种模板和应用
user_qym
OIer
展开
-
【模板】A*算法
A*算法给定一张N个点(编号1,2…N),M条边的有向图,求从起点S到终点T的第K短路的长度,路径允许重复经过点或边。注意: 每条最短路中至少要包含一条边。输入格式第一行包含两个整数N和M。接下来M行,每行包含三个整数A,B和L,表示点A与点B之间存在有向边,且边长为L。最后一行包含三个整数S,T和K,分别表示起点S,终点T和第K短路。输出格式输出占一行,包含一个整数,表...原创 2020-02-20 17:16:42 · 575 阅读 · 1 评论 -
【模板】Kruskal
Kruskal在此提供模板X1(滑稽护体)#include<bits/stdc++.h>using namespace std;const int N=100010,M=2*N,INF=0x3f3f3f3f;int n,m;int p[N];struct Edge{ int a,b,w;}edges[M];bool cmp(Edge x,Edge y){...原创 2020-02-12 10:03:53 · 90 阅读 · 0 评论 -
【模板】Dijkstra+heap
Dijkstra+堆优化给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为非负值。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出-1。数据范...原创 2020-02-11 19:05:34 · 192 阅读 · 0 评论 -
【模板】Spfa判负环
【模板】Spfa判负环给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你判断图中是否存在负权回路。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式如果图中存在负权回路,则输出“Yes”,否则输出“No”。数据范围1≤n≤2000,1≤m≤10000,图中涉及边长绝对值均...原创 2020-02-07 19:31:09 · 301 阅读 · 0 评论 -
租用游艇
题目描述长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1<=i<=j<=n。试设计一个算法,计算出从游艇出租站1 到游艇出租站n 所需的最少租金。对于给定的游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1<=i<j...原创 2020-02-03 12:12:03 · 308 阅读 · 0 评论 -
【模板】Spfa
Spfa给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible。数据保证不存在负权回路。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存...原创 2020-01-29 15:18:49 · 316 阅读 · 0 评论 -
【模板】Bellman_Ford
Bellman_Ford给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出从1号点到n号点的最多经过k条边的最短距离,如果无法从1号点走到n号点,输出impossible。注意:图中可能 存在负权回路 。输入格式第一行包含三个整数n,m,k。接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一...原创 2020-01-27 12:47:53 · 416 阅读 · 0 评论 -
【模板】Floyd
Floyd给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出“impossible”。数据保证图中不存在负权回路。输入格式第一行包含三个整数n,m,k接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。接下来k行,每行包含两...原创 2020-01-26 15:36:10 · 626 阅读 · 0 评论 -
【模板】Dijkstra
Dijkstra给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出-1。数据范围1≤n...原创 2020-01-26 13:27:59 · 425 阅读 · 0 评论