AcWing 853. 有边数限制的最短路 bellman-ford 结构体
2024-10-08 10:11:40
//存在负权值 处理负环
//如果能求出来 一般是不存在负权回路
//如果有负回路 那最小距离可能是负无穷
#include <cstring>
#include <iostream>
using namespace std;
const int N = 1e4+;
struct Edge {
int a;
int b;
int w;
} edge[N];
int n, m, k;
int dist[N], backup[N];
void bellman_ford() {
memset(dist, 0x3f, sizeof dist);
dist[] = ;
////迭代k次,表示经过不超过k条边走到每个点的距离
for (int i=; i<k; i++) {
memcpy(backup , dist, sizeof dist);//备份,不加备份可能出现串联
for (int j=; j<m; j++) {
int a=edge[j].a,b=edge[j].b,w=edge[j].w;
dist[b] = min(dist[b],backup[a]+w);//只用上一次的
}
}
if (dist[n] > 0x3f3f3f3f/) cout << "impossible";
else cout << dist[n];
}
int main() {
cin >> n >> m >> k;
for (int i=; i<m; i++) {
int a, b, w;
cin >> a >> b >> w;
edge[i] = {a, b, w};
}
bellman_ford();
return ;
}
最新文章
- sql 把特定数据排在最前面
- js 高程(三)学习感言(随时更新)
- 添加 SecondaryNameNode
- C# Devexpress学习--LabelControl
- UNIX基础知识之时间值
- WordPress 前端投稿/编辑插件 DJD Site Post(支持游客和已注册用户)
- OpenCV+MFC显示图像
- CF765F Souvenirs
- maven本地上传jar包
- 【算法】狄克斯特拉算法(Dijkstra’s algorithm)
- Ubuntu16.04 appstreamcli错误
- promise第一篇-简介
- Web jsp开发学习——点击菜单页面切换
- 堆内存泄漏移除导致tcp链接异常高
- asp.net 获取客户端IP
- FNV hash算法
- c# 获取项目根目录方法
- c# 关键字学习
- Redhat9.0+Apache1.3.29+Mysql3.23.58+PHP4.3.4
- FreeDOS 实模式 保护模式