[知识点]-[最短路]

代码:

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]<<" ";
	}
}
相关推荐
zhangxueyi2 小时前
Java实现基数排序算法
java·数据结构·算法
_Djhhh2 小时前
【LeetCode Hot100】图论篇
算法·深度优先
不吃香菜?3 小时前
贝叶斯算法实战:从原理到鸢尾花数据集分类
算法·分类·数据挖掘
不吃香菜?3 小时前
逻辑回归之参数选择:从理论到实践
算法·机器学习·逻辑回归
keep intensify4 小时前
【数据结构】- 栈
c语言·数据结构·算法·
小技与小术4 小时前
代码随想录算法训练营day12(二叉树)
数据结构·python·算法
Chrome深度玩家5 小时前
微博安卓版话题热度推荐算法与内容真实性分析
算法·机器学习·推荐算法
Demons_kirit5 小时前
LeetCode LCP40 心算挑战题解
java·数据结构·算法·leetcode·职场和发展
每次的天空6 小时前
Android面试总结之GC算法篇
android·算法·面试
EanoJiang6 小时前
树与二叉树
算法