社区讨论
有个问题
P3371【模板】单源最短路径(弱化版)参与者 1已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo1uxuyw
- 此快照首次捕获于
- 2023/10/23 03:24 2 年前
- 此快照最后确认于
- 2023/11/03 03:54 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,p,f[114514];
bool v[114514];
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') x=10*x+ch-'0',ch=getchar();
return x*f;
}
struct dijk{
int t,v;
};
struct Dijk{
int d,x;
bool operator>(const Dijk a)const{
return d>a.d;
}
};
vector<dijk>vec[114514];
priority_queue<Dijk,vector<Dijk>,greater<Dijk> >q;
int dijkstra(int s,int t){
memset(f,0x3f,sizeof(f));
f[s]=0;
q.push((Dijk){0,s});
while(!q.empty()){
int a=q.top().x;
q.pop();
if(v[a]) continue;
v[a]=1;
for(auto g:vec[a]){
int x=g.t,y=g.v;
if(f[x]>f[a]+y){
f[x]=f[a]+y;
q.push((Dijk){f[x],x});
}
}
}
}
int main(){
n=read(),m=read(),p=read();
while(m--){
int x=read(),y=read(),z=read();
vec[x].push_back((dijk){y,z});
}
dijkstra(p,n);
for(int i=1;i<=n;i++){
if(f[i]==0x3f3f3f3f) printf("2147483647 ");
else printf("%d ",f[i]);
}
return 0;
}
标准版的过了但弱化版的TLE?!
回复
共 4 条回复,欢迎继续交流。
正在加载回复...