社区讨论

玄关求条

P4779【模板】单源最短路径(标准版)参与者 3已保存回复 3

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@mhja5sdj
此快照首次捕获于
2025/11/03 23:13
4 个月前
此快照最后确认于
2025/11/03 23:13
4 个月前
查看原帖
36pts,求调
CPP
#include <bits/stdc++.h>
#include <queue>
using namespace std;
int s,n,m,dis[100010],vis[100010];
struct edge {
	int v,w;
};
struct node {
	int id,d;
	bool operator<(const node &n)const {
		return d>n.d;
	}
};
vector<edge> E[100010];
priority_queue<node> q;
int main() {
	cin>>n>>m>>s;
	memset(dis,0x3f,sizeof(dis));
	for(int i=1; i<=m; i++) {
		int u,v,w;
		cin>>u>>v>>w;
		E[u].push_back({v,w});
		E[v].push_back({u,w});
	}
	dis[s]=0;
	q.push({s,0});
	while(!q.empty()) {
		node nd=q.top();
		q.pop();
		int id=nd.id,d=nd.d;
		if(vis[id]) continue;
		vis[id]=1;
		for(int i=0; i<E[id].size(); i++) {
			int v=E[id][i].v,w=E[id][i].w;
			if(!vis[v]&&dis[v]>d+w) {
				dis[v]=d+w;
				q.push({v,dis[v]});
			}
		}
	}
	for(int i=1; i<=n; i++) cout<<dis[i]<<" ";
	return 0;
}



回复

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

正在加载回复...