随笔分类 -  图论--最短路

摘要:地址:https://www.acwing.com/problem/content/854/ 解析: 引入cnt[i]数组,表示到达当前这个点最短路的边数。 对于一个正常的正权图而言,每个点最多被更新n-1次,只会有n-1条边。 如果到达某个点,最短路边数>=n,那么,说明有重复点,至少n+1个点, 阅读全文
posted @ 2020-11-24 20:36 liyexin 阅读(240) 评论(0) 推荐(0)
摘要:一:Bellman_Ford 1:Dijkstra并不能解决带有负权边的图。 而Bellman_Ford算法可以。 2:核心代码: for(int i=1;i<=n-1;i++) { for(int j=1;j<=m;j++) { dis[v[j]]=min(dis[v[j]],backup[u[j 阅读全文
posted @ 2020-11-24 20:26 liyexin 阅读(151) 评论(0) 推荐(0)
摘要:地址:https://www.luogu.com.cn/problem/P3385 解析: 直接Bellman_ford,然后再遍历一遍,如果还能松弛,那么就说明有负权回路。 但是题里问的是顶点1能到达的负环,所以如果有负权回路但是1不能到,依然是NO 后台是有这么个样例: 3 3 2 3 -1 3 阅读全文
posted @ 2020-11-23 20:14 liyexin 阅读(205) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/855/ 解析: 图里含有负权边,所以考虑Bellman_ford算法。 Bellman_ford就是从局部扩展到全局,得的是局部最优解,与Dijkstra有着很大不同。 本题要求最多经过k条边到n点的最短距离,那么 阅读全文
posted @ 2020-11-23 16:46 liyexin 阅读(162) 评论(0) 推荐(0)
摘要:来自y总: 1:Floyd 三个for,枚举每一个点当做中转点对两点之间的距离进行松弛。其实就是个动态规划 #include<iostream> #include<cstring> #include<cstdio> #include<bitset> #include<queue> using nam 阅读全文
posted @ 2020-11-19 20:00 liyexin 阅读(119) 评论(0) 推荐(0)