最短路模板题84分求调
  • 板块灌水区
  • 楼主pbc_pbc
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/10/22 22:13
  • 上次更新2024/10/23 09:42:13
查看原帖
最短路模板题84分求调
748685
pbc_pbc楼主2024/10/22 22:13

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 ;
}
2024/10/22 22:13
加载中...