P4779模板单源最短路径(标准版)(dij)
Posted SSL_LKJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P4779模板单源最短路径(标准版)(dij)相关的知识,希望对你有一定的参考价值。
单源最短路径
解题思路
dij模板
AC代码
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int n,m,s,tot,c[100005],head[100005];
long long d[100005];
priority_queue<pair<int,int> > q;//队列
struct node
{
int to,next,z;
}a[200005];
void add(int x,int y,int z)
{
a[++tot]=(node){y,head[x],z};
head[x]=tot;
}
void dij()//dij
{
memset(d,0x7f,sizeof(d));
d[s]=0;
q.push(make_pair(0,s));
while(!q.empty())
{
int x=q.top().second;
q.pop();
if(c[x])continue;
c[x]=1;
for(int i=head[x];i;i=a[i].next)
if(!c[a[i].to]&&d[x]+1ll*a[i].z<d[a[i].to])
{
d[a[i].to]=d[x]+1ll*a[i].z;
q.push(make_pair(-d[a[i].to],a[i].to));
}
}
}
int main()
{
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
}
dij();
for(int i=1;i<=n;i++)
printf("%lld ",d[i]);
return 0;
}
谢谢
以上是关于P4779模板单源最短路径(标准版)(dij)的主要内容,如果未能解决你的问题,请参考以下文章
P4779 模板单源最短路径(标准版)单源最短路Dijkstra