Dij TLE3求调
查看原帖
Dij TLE3求调
1279251
frank7楼主2025/7/24 09:25

吸氧9R1T,不吸氧7A3T 代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,m,b,dis[N],ans;
struct edge{
	int v,w;
};
vector<edge>e[N];
struct nd{
	int u,step;
	friend bool operator <(nd x,nd y){
		return x.step<y.step;
	}
};
int dij(int st){
	memset(dis,0x3f,sizeof dis);
	priority_queue<nd>que;
	que.push({st,0});
	dis[st]=0;
	while(!que.empty()){
		nd n1=que.top();
		que.pop();
		if(dis[n1.u]<n1.step) continue;
		
		for(auto i:e[n1.u]){
			
			int v=i.v,w=i.w;
			if(dis[v]>dis[n1.u]+w){
				dis[v]=dis[n1.u]+i.w;
				que.push({v,dis[v]});
			}
		}
	}
}
int main(){
	cin>>n>>m>>b;
	for(int i=1;i<=m;i++){
		int u,v,w;cin>>u>>v>>w;
		e[u].push_back({v,w});
		e[v].push_back({u,w});
	}
	dij(1);
	while(b--){
		int st,ed;cin>>st>>ed;
		ans=dis[st]+dis[ed];
		cout<<ans<<endl;
	}
	return 0;
}

求调

2025/7/24 09:25
加载中...