36pts求调QAQ
查看原帖
36pts求调QAQ
1244161
jexst楼主2025/8/31 18:43
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10, M = 1e5 + 10;
int n, m, s;
struct node {
	int v, w;
};
vector <node> g[N];
int dis[N];
bool vis[N];
int main() {
	cin >> n >> m >> s;
	for (int i = 1; i <= n; i++) dis[i] = 2e9;
	for (int i = 1, u, v, w; i <= m; i++) {
		cin >> u >> v >> w;
		g[u].push_back({v, w});
	}
	priority_queue <int, vector <int>, greater <int> > q;
	dis[s] = 0;
	q.push(s);
	while (!q.empty()) {
		int u = q.top();
		q.pop();
		if (vis[u]) continue;
		vis[u] = true;
		for (int i = 0; i < g[u].size(); i++) {
			int v = g[u][i].v, w = g[u][i].w;
			if (dis[v] > dis[u] + w) {
				dis[v] = dis[u] + w;
				if (!vis[v]) q.push(v);
			}
		}
	}
	for (int i = 1; i <= n; i++) cout << dis[i] << ' ';
	return 0;
}

2025/8/31 18:43
加载中...