给定一个 nn 个点 mm 条边的有向图,图中可能存在重边和自环, 边权可能为负数

请你求出从 11 号点到 nn 号点的最多经过 kk 条边的最短距离,如果无法从 11 号点走到 nn 号点,输出 impossible

注意:图中可能 存在负权回路 。

输入格式

第一行包含三个整数 n,m,kn,m,k。

接下来 mm 行,每行包含三个整数 x,y,zx,y,z,表示存在一条从点 xx 到点 yy 的有向边,边长为 zz。

点的编号为 1∼n1∼n。

输出格式

输出一个整数,表示从 11 号点到 nn 号点的最多经过 kk 条边的最短距离。

如果不存在满足条件的路径,则输出 impossible

数据范围

1≤n,k≤5001≤n,k≤500,
1≤m≤100001≤m≤10000,
1≤x,y≤n1≤x,y≤n,
任意边长的绝对值不超过 1000010000。

输入样例:

3 3 1
1 2 1
2 3 1
1 3 3

输出样例:

3

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 510,M=10010;
int n,m,k;
int dist[N],last[N];
struct Edge{
    int a,b,w;
}edges[M];
void bellman_ford()
{
    memset(dist,0x3f,sizeof dist);
    dist[1]=0;
    for(int i=0;i<k;i++)
    {
        memcpy(last,dist,sizeof dist);
        for(int j=0;j<m;j++)
        {
            auto e=edges[j];
            dist[e.b]=min(dist[e.b],last[e.a]+e.w);
        }
    }
   
}
int main()
{
    scanf("%d%d%d", &n, &m,&k);
    for(int i=0;i<m;i++)
    {
        int a,b,w;
        scanf("%d%d%d", &a, &b,&w);
        edges[i]={a,b,w};
    }
    bellman_ford();
    if(dist[n]>0x3f3f3f3f/2)puts("impossible");
    else printf("%d\n",dist[n]);
    return 0;
}

853. 有边数限制的最短路(bellman_ford算法)相关推荐

  1. AcWing 853. 有边数限制的最短路(bellman的k边限制最短路)

    题目链接 https://www.acwing.com/problem/content/855/ 思路 思路其实利用了bellman_ford算法的特点,之前还没注意过,我们在第一层循环限制每个点可以 ...

  2. 备战蓝桥杯—有边数限制的最短路 (bellman_ford+)——[AcWing]有边数限制的最短路

    因为近期在学图,所以顺带的写一篇最短路的备战蓝桥杯文章. 最短路(单源) 所有边权都为正数有两种算法: 1.朴素Dijkstra    O(n^2) 2.堆优化的Dijkstra    O(mlogn ...

  3. BELLMAN-FORD算法 求有边数限制的最短路

    这个算法也是紧承我们之前讲过的关于图论的内容,我们在前面分析图的时候说过了对于不同的图论问题,我们会有不同的求解方法,那么这里我们讲到Bellman-Ford算法是用于解决有边数限制的求解最短路问题. ...

  4. 算法百题斩其三: 单源最短路与算法——其一

    算法百题斩其三: 单源最短路与算法--其一 写在前面:何所谓"斩"? 斩,即快速而有力地切断,指我们用最精简的语言,一针见血地点破算法题的核心难点.斩需三思而后行:斩需借助外力.旁 ...

  5. Bellman_Ford算法

    Bellman_Ford算法和Dijkstra算法都可以用来求解有向图的单源最短路径问题,但是,相比于Dijkstra算法, Bellman_Ford算法允许边的权重为负值. 算法的详细讨论见算法导论 ...

  6. 单源最短路 Dijkstra算法 和 SPFA算法

    单源最短路 •从一个点出发,到达其他顶点的最短路径的长度. •基本操作:松弛 •d[u]+map[u, v]< d[v]这样的边(u,v)称为紧的(tense),可以对它进行松弛(relax): ...

  7. 图论-最短路Dijkstra算法详解超详 有图解

    整体来看dij就是从起点开始扩散致整个图的过程,为什么说他稳定呢,是因为他每次迭代,都能得到至少一个结点的最短路.(不像SPFA,玄学复杂度) 但是他的缺点就是不能处理带负权值的边,和代码量稍稍复杂. ...

  8. 含有负边的图的最短路径(Bellman_ford算法)

    更新所有的边,每条边更新V-1次,时间复杂度为O(V*E). 有些更新操作是重复了的,这里可以考虑检查多余的重复操作作,如果没有更新发生,则立即终止算法. #include<iostream&g ...

  9. Remmarguts' Date(POJ2449+最短路+A*算法)

    题目链接:http://poj.org/problem?id=2449 题目: 题意:求有向图两点间的k短路. 思路:最短路+A*算法 代码实现如下: 1 #include <set> 2 ...

最新文章

  1. 检索数据表中重复的记录
  2. 关于bat的变量赋值和解析机制
  3. 实现Web虚拟现实的最轻松方案—A-Frame框架
  4. jQuery的ajax的post请求json格式无法上传空数组
  5. pandas 在某个列表中的值 筛选列_Pandas学习笔记(二)
  6. ELK详解(二十四)——geoip画访问地域热图
  7. 软件工程--结对第二次作业
  8. Spring Cloud Gateway替代zuul作为API网关(一)
  9. 程序员大神常用软件:mybase,一款个人知识笔记管理神器
  10. “CSIG 计算机视觉前沿 · 研讨会”于6月28日在百度举行
  11. 老板要如何去激励自己的员工?
  12. python gil全局锁_什么是Python全局解释器锁(GIL)?
  13. GitHub个人主页默认模板
  14. spark:开发本地测试的wordcount程序
  15. 盘点 2013 年互联网发生的大事
  16. 大数据技术之SparkSQL(超级详细)
  17. infer的用法_infer是什么意思|infer的音标|infer的用法 - 英语词典
  18. osg火焰爆炸烟火粒子效果
  19. 【Spring】JavaBean、MVC软件设计模式与Java中Dao、Service、Controll三层体系
  20. 柯美服务器显示ff,柯尼卡美能达C故障代码解读.docx

热门文章

  1. 基于大数据分析技术实现对信用卡盗刷的预防
  2. pr零基础晋升笔记(学习复习用)
  3. 基于vue开发的,三国杀新版卡牌在线制作
  4. 整理的金蝶云苍穹初级练习题
  5. 【华人学者风采】郑宇 京东
  6. dede 后台 一直显示验证码不正确的原因
  7. C++基础知识(上)
  8. 计算机与音乐教育留学,计算机与儿童创新音乐教育
  9. 微信的支付(二维码,APP)
  10. AIE功能介孔二氧化硅/环糊精辅助的荧光二氧化硅纳米粒子/α-环糊精改性SiO2纳米微球/基于MOFs或中空介孔二氧化硅复合载体