社区讨论
刚学dijkstra,求找虫子qwq
P3371【模板】单源最短路径(弱化版)参与者 6已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @lod0de40
- 此快照首次捕获于
- 2023/10/30 22:41 2 年前
- 此快照最后确认于
- 2023/11/05 08:59 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
#define RE register
#define maxn 10005
priority_queue<pair<int,int> >q;
struct Edge
{
int u,v,w,next;
}edge[500005];
int head[maxn],cnt,n,m,s,u,vi,v[maxn],d[maxn],w;
inline void add(int u,int v,int w){
edge[++cnt].u=u;
edge[cnt].w=w;
edge[cnt].v=v;
edge[cnt].next=head[u];
head[u]=cnt;
}
inline dij(){
memset(d,0x3f,sizeof(d));
memset(v,0,sizeof(v));
d[s]=0;
q.push(make_pair(0,s));
while(q.size()){
int x=q.top().second;
q.pop();
if(v[x])continue;
v[x]=1;
for(RE int i=head[x];i;i=edge[i].next){
int v=edge[i].v;
if(d[v]>d[x]+edge[i].w){
d[v]=d[x]+edge[i].w;
q.push(make_pair(-d[v],v));
}
}
}
}
inline void fread(int &x){
x=0;
int f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
x*=f;
}
int main(){
fread(n);
fread(m);
fread(s);
for(RE int i=1;i<=m;i++){
fread(u);
fread(vi);
fread(w);
add(u,vi,w);
}
for(RE int i=1;i<=n;i++)printf("%d ",d[i]);
return 0;
}
回复
共 8 条回复,欢迎继续交流。
正在加载回复...