悬关,TLE在最后一个点,求调
查看原帖
悬关,TLE在最后一个点,求调
1046636
YFF1楼主2024/11/3 17:13
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> pii;
int n,m,a,b,c,dis[200005];
vector<pii>g[200005];
void bfs(int x){
	priority_queue<pii>q;
	for(int i=1;i<=n;i++)dis[i]=1e18;
	for(pii i:g[x]){
		if(dis[i.first]>i.second){
			dis[i.first]=i.second;
			q.push({dis[i.first],i.first});	
		}
	}
	while(!q.empty()){
		int pos=q.top().second;
		q.pop();
		for(pii i:g[pos]){
			if(dis[i.first]>dis[pos]+i.second){
				dis[i.first]=dis[pos]+i.second;
				q.push({dis[i.first],i.first});
			}
		}
	}
	if(dis[x]!=1e18)printf("%lld\n",dis[x]);
	else printf("-1\n");
}
signed main () {
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		scanf("%lld%lld%lld",&a,&b,&c);
		g[a].push_back({b,c});
	}
	for(int i=1;i<=n;i++)bfs(i);
	return 0;
}
2024/11/3 17:13
加载中...