求助 最短路跑相反权值为啥不对呀
查看原帖
求助 最短路跑相反权值为啥不对呀
161468
小菜鸟呵呵楼主2024/3/10 15:28
#include <bits/stdc++.h>
using namespace std;
const int N = 2000;
struct edge{
	int v, w;
};
vector<edge> e[N];
int vis[N], d[N], m, n;

void dij(int s) {
	memset(d,0x3f,sizeof d);
	d[s] = 0;
	priority_queue<pair<int, int>> q;
	q.push({0, s});
	while(q.size()) {
		int u = q.top().second; q.pop();
		if(vis[u]) continue;
		vis[u] = 1;
		for(auto ed : e[u]) {
			int v = ed.v, w = ed.w;
			if(d[v] > d[u] + w) d[v] = d[u] + w;
			q.push({-d[v], v});
		}
	}
}

int main() {
	int u, v, w;
	cin >> n >> m;
	for(int i = 0; i < m; i++) {
		cin >> u >> v >> w, e[u].push_back({v, -w});
	}
	dij(1);
	cout << -d[n];
}
2024/3/10 15:28
加载中...