社区讨论

求助!

灌水区参与者 4已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@m0t7jbkn
此快照首次捕获于
2024/09/08 14:43
去年
此快照最后确认于
2025/11/04 21:32
4 个月前
查看原帖
这段代码为什么会CE!
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;

struct rate{
	int to, w;
};

struct node {
	int id, value;
};

bool operator<(node x, node y) {
	return x.value > y.value;
}

vector<rate>linker[10010];
int dis[10010];
bool vis[10010];
void Dijkstra(int n, int m, int s) {
	priority_queue<node>q;
	for (int i = 1; i <= m; i++) {
		int u, v, w;
		cin >> u >> v >> w;
		linker[u].push_back({v, w});
	}
	for (int i = 1; i <= n; i++)
		dis[i] = 1e10;
	dis[s] = 0ll;
	q.push({s, 0ll});
	for (int cnt = 1; cnt <= n; cnt++)
		node temp = q.top();
		q.pop();
		if(vis[temp.id]) continue; 
		int id = temp.id;
		int val = temp.value;
		vis[id] = 1;
		dis[id] = min(val, dis[id]);
		for (int i = 0; i < linker[id].size(); i++)
			q.push({linker[id][i].to, val + linker[id][i].w});
	}
	for (int i = 1; i <= n; i++)
		if(dis[i] == 1e10) cout << -1 << " ";
		else cout << dis[i] << " ";
}

int n, m, s;
signed main() {
	cin >> n >> m >> s;
	Dijkstra(n, m, s);
	return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...