社区讨论
玄关求条
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 条回复,欢迎继续交流。
正在加载回复...