P3371单源最短路径(弱化版) 90分第三点不过求助qwq
  • 板块学术版
  • 楼主farkar
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/10/22 13:00
  • 上次更新2023/10/27 06:32:30
查看原帖
P3371单源最短路径(弱化版) 90分第三点不过求助qwq
705473
farkar楼主2022/10/22 13:00
#include <bits/stdc++.h>
using namespace std;

const int INF = 1 << 31 - 1;
int n, m, s, u, v, w, ans[10010];
map<int, int> edge[10010];

int main() {
	scanf("%d%d%d", &n, &m, &s);
	s--;
	while (m--) {
		scanf("%d%d%d", &u, &v, &w);
		u--;
		v--;
		if (edge[u].count(v) && edge[u][v] > w || !edge[u].count(v)) {
			edge[u][v] = w;
		}
	}
	for (int i = 0; i < n; i++) {
		ans[i] = INF;
	}
	ans[s] = 0;
	queue<int> q;
	q.push(s);
	while (!q.empty()) {
		int p = q.front();
		for (auto i : edge[p]) {
			if (ans[p] + i.second < ans[i.first]) {
				ans[i.first] = ans[p] + i.second;
				q.push(i.first);
			}

		}
		q.pop();
	}
	for (int i = 0; i < n; i++) {
		printf("%d ", ans[i]);
	}
}
2022/10/22 13:00
加载中...