单源最短路径

#include<iostream>

#include<vector>

#include<queue>

#include <climits>

using namespace std;

const int N=1e5+10;

long long dist[N];

typedef pair<int,int> PII;

vector<PII>graph[N];

priority_queue<PII,vector<PII>,greater<PII>>pq;

int n,m,s;

void dijkstra(){

for(int i=0;i<=n;++i)dist[i]=INT_MAX;

vector<bool>st(n,false);

dist[s]=0;

pq.push({0,s});

while(pq.size()){

auto e=pq.top();pq.pop();

int w=e.first,u=e.second;

if(st[u])continue;

st[u]=true;

for(auto &p:graph[u]){

int ww=p.second,v=p.first;

if(!st[v]&&dist[v]>dist[u]+ww){

dist[v]=dist[u]+ww;

pq.push({dist[v],v});

}

}

}

}

int main(){

cin>>n>>m>>s;

for(int i=0;i<m;++i){

int u,v,w;cin>>u>>v>>w;

graph[u].push_back({v,w});

}

dijkstra();

for(int i=1;i<=n;++i)cout<<dist[i]<<" ";

return 0;

}

相关推荐
2401_873544922 小时前
分布式缓存一致性
开发语言·c++·算法
香芋超新星2 小时前
反转字符串中的小写字母
算法
篮l球场2 小时前
数组中的第K个最大元素
数据结构·算法·leetcode
月落归舟2 小时前
排序算法---(三)
数据结构·算法·排序算法
njidf2 小时前
C++中的观察者模式
开发语言·c++·算法
IAUTOMOBILE2 小时前
C++ 入门基础:开启编程新世界的大门
java·jvm·c++
2301_822782822 小时前
C语言数组通关攻略!从一维到字符数组,零基础也能轻松掌握
c语言·算法·数组·编程基础·避坑技巧
zhugby2 小时前
标号法原理
算法
-许平安-2 小时前
MCP项目笔记七(插件 calculator)
c++·笔记·json·plugin·mcp