社区讨论
20pts求救
P3371【模板】单源最短路径(弱化版)参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lptrtcx4
- 此快照首次捕获于
- 2023/12/06 20:54 2 年前
- 此快照最后确认于
- 2023/12/07 03:40 2 年前
样例过了,但几乎全WA,违规紫衫
CPP#include<bits/stdc++.h>
using namespace std;
struct node{
long long w;
long long v;
};
struct dtc{
long long dis;
long long tp;
};
struct Xsort{bool operator()(dtc q,dtc p){return q.dis<p.dis;}};
vector<node>a[100005];
void Dijkstra(long long n,long long m,long long s){
long long f[100005],distance[100005];
priority_queue<long long,vector<dtc>,Xsort>d;
for(int i=1;i<=n;i++)
distance[i]=pow(2,31)-1;
distance[s]=0;
d.push((dtc){0,s});
memset(f,0,sizeof(f));
while(!d.empty()){
dtc ud=d.top();
d.pop();
if(f[ud.tp])
continue;
f[ud.tp]=1;
for(int i=0;i<a[ud.tp].size();i++)
if(a[ud.tp][i].v+distance[ud.tp]<distance[a[ud.tp][i].w])
distance[a[ud.tp][i].w]=a[ud.tp][i].v+distance[ud.tp],d.push((dtc){distance[a[ud.tp][i].w],a[ud.tp][i].w});
}
for(int i=1;i<=n;i++)
cout<<distance[i]<<" ";
return;
}
int main(){
long long n,m,s,i,x,y,u;
cin>>n>>m>>s;
for(i=1;i<=m;i++){
cin>>x>>y>>u;
a[x].push_back((node){y,u});
// a[y].push_back((node){x,u}); //无 向 图
}
Dijkstra(n,m,s);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...