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 模板单源最短路径(标准版)

P4779 模板单源最短路径(标准版) 题解

P4779 模板单源最短路径(标准版)单源最短路Dijkstra

P4779 模板单源最短路径(标准版)二叉堆优化的 Dijkstra

单源最短路径(dij+堆优化)

luogu P3371 & P4779 ---单源最短路径spfa & 最大堆优化Dijkstra