社区讨论
求调
P4779【模板】单源最短路径(标准版)参与者 4已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @md9lt3tl
- 此快照首次捕获于
- 2025/07/19 10:03 8 个月前
- 此快照最后确认于
- 2025/11/04 04:07 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,ss,s[100005];
bool vis[100005];
struct node{
int num,t;
};
vector<node> a[100005];
struct compare{
bool operator()(int x,int y){
return s[x]>s[y];
}
};
priority_queue<int,vector<int>,compare> q;
void d(){
int i,p;
q.push(ss);
while(!q.empty()){
p=q.top();
q.pop();
if(vis[p]) continue;
vis[p]=1;
for(i=1;i<=a[p][0].num;i++){
if(s[a[p][i].num]>s[p]+a[p][i].t){
s[a[p][i].num]=s[p]+a[p][i].t;
if(!vis[a[p][i].num]) q.push(a[p][i].num);
}
}
}
}
int main(){
cin>>n>>m>>ss;
int i,j,k,v;
node f;
f.num=0;
f.t=0;
for(i=1;i<=n;i++){
a[i].push_back(f);
s[i]=0x7fffffff;
}
for(i=1;i<=m;i++){
cin>>j>>k>>v;
f.t=v;
f.num=k;
a[j][0].num++;
a[j].push_back(f);
}
s[ss]=0;
d();
for(i=1;i<=n;i++) cout<<s[i]<<" ";
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...