Dijkstra 中的错误输出
Wrong output in Dijkstra
今天我正在解决一个问题,我们必须找到 0 和 n-1 之间的距离 这是我的代码,它只是输出我之前初始化它的 -INF,它甚至没有改变(这里我使用的是邻接矩阵而不是列表( 这是我的代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll ;
#define INF LLONG_MAX
vector<bool> visited(100);
vector<ll> dist(100);
priority_queue<pair<ll,ll>> q;
ll n,m,a,b,c;
vector<vector<ll>> adj(100 , vector<ll> (100));
void dijkstra(ll s) {
for (ll i = 0; i < n; i++) {
dist[i] = -INF;
visited[i] = false;
}
dist[s] = 0;
q.push({0, s});
while (!q.empty()) {
ll y = q.top().second;
q.pop();
if (visited[y]) continue;
visited[y] = true;
for (ll j = 0; j < n; j++) {
if (adj[y][j] == 0) continue;
if (dist[y] + adj[y][j] < dist[j]) {
dist[j] = dist[y] + adj[y][j];
q.push(make_pair(-dist[j], j));
}
}
}
}
int main() {
cin >> n >> m;
for(ll i = 0; i < m; i++){
cin >> a >> b >> c;
adj[a-1][b-1] = c;
adj[b-1][a-1] = c;
}
dijkstra(0);
ll distan = dist[n-1];
cout << distan;
return 0;
}
Input is this :
5 7
2 1 5
1 3 1
3 2 8
3 5 7
3 4 3
2 4 7
4 5 2
Output is : 6
请让我知道我应该在我的代码中更改什么 谢谢!!
知道了,我应该做INF而不是INF:(
相关文章:
- 输出错误,问题是找到总和5000位数字cpp
- 使用复制构造函数的程序输出错误
- 异或字符串加密/解密输出错误
- 在linux上使用g++输出错误,在windows上更正
- 使用递归函数 (c++) 将长字符串转换为整数时输出错误
- ECDSA 密钥对生成输出错误
- fscanf() 输出错误的值
- 输入 1024 后十进制到二进制转换的输出错误?
- 输出错误命令的条件语句
- cuSparse (cusparseDcsrgemm) 中的矩阵乘法输出错误的结果
- 为什么 du -sh 输出错误大小的内存映射文件
- VS2017 的输出错误,但 mingw 有效
- 如何使FFMPEG C 代码不输出错误消息
- 乘以时输出错误.这是我编译器中的错误吗?C
- 输出错误:两个不同编译器上的不同输出:Prime Cryptarithm USACO
- 为什么输出错误崩溃
- C++输入/输出错误
- 尝试用 c++ 制作一个简单的加法器.编译成功,但输出错误
- 当我使用此合并排序代码运行时,输出错误
- 递归功能输出错误的值