TLE了。。。
#include<bits/stdc++.h>
using namespace std ;
const int N = 2e5 + 5 ;
int n , m , s , d[N] ;
vector<pair<int , int> > g[N] ;
bool vis[N] ;
priority_queue<pair<int , int> > q ;
void dijkstra(int s){
q.push({0 , s}) ;
while(!q.empty()){
int x = q.top().second ;
vis[x] = 1 ;
q.pop() ;
for(int i = 0 ; i < g[x].size() ; i ++){
int y = g[x][i].second ;
int z = g[x][i].first ;
if(vis[y]) continue ;
if(d[y] > d[x] + z){
d[y] = d[x] + z ;
q.push({-d[y] , y}) ;
}
}
}
}
signed main(){
cin >> n >> m >> s ;
while(m --){
int x , y , z ;
scanf("%d%d%d" , &x , &y , &z) ;
g[x].push_back({z , y}) ;
}
memset(d , 0x3f , sizeof(d)) ;
d[s] = 0 ;
dijkstra(s) ;
for(int i = 1 ; i <= n ; i ++)
printf("%d " , d[i]) ;
return 0 ;
}