[知识点]-[最短路]

代码:

cpp 复制代码
#include<bits/stdc++.h>
#define int long long

using namespace std;

const int N = 1e5+10;

int n,m,A;
int dis[N];
int vis[N];

vector<pair<int,int> > e[N];

void spfa()
{
	for(int i=1;i<=n;i++) dis[i] = 1e18;
	queue<int > q;
	q.push(A);
	dis[A] = 0;
	vis[A] = 1;
	while(q.size())
	{
		int now = q.front();
		q.pop();vis[now] = 0;
		for(auto t:e[now])
		{
			int spot = t.first,w = t.second;
			if(dis[spot]>dis[now]+w)
			{
				dis[spot] = dis[now]+w;
				if(vis[spot]==0)
				{
					vis[spot] = 1;
					q.push(spot);
				}
			}
		}
	}	
}

signed main()
{
	cin>>n>>m>>A;
	while(m--)
	{
		int a,b,c;
		cin>>a>>b>>c;
		e[a].push_back({b,c});
		e[b].push_back({a,c});
	}
	spfa();
	
	for(int i=1;i<=n;i++)
	{
		if(dis[i]==1e18) cout<<(1ll<<31)-1;
		else cout<<dis[i]<<" ";
	}
}
相关推荐
旺仔.2916 分钟前
常用算法 详解
数据结构·算法
今儿敲了吗10 分钟前
算法复盘——差分
数据结构·c++·笔记·学习·算法
qq_3985865420 分钟前
平衡三进制超前进位加法器
算法
西西弟24 分钟前
最短路径之Dijkstra算法(数据结构)
数据结构·算法
沉鱼.4428 分钟前
树形DP题目
算法·深度优先
VelinX40 分钟前
【个人学习||算法】多维动态规划
学习·算法·动态规划
AlenTech42 分钟前
139. 单词拆分 - 力扣(LeetCode)
算法·leetcode·职场和发展
墨韵流芳1 小时前
CCF-CSP第41次认证第一题——平衡数
c++·算法·ccf·平衡数
Book思议-1 小时前
【数据结构实战】栈的经典应用:后缀表达式求值 +中缀转后缀 ,原理 + 代码双通透
数据结构·算法··后缀表达式·后缀转中缀
炽烈小老头1 小时前
【 每天学习一点算法 2026/03/30】跳跃游戏
学习·算法