20求调悬关
查看原帖
20求调悬关
1423857
wzt20130125楼主2025/6/28 09:44

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
long long dist[200001],v[200001];
long long n,m,st,qq;
struct P{
	long long to,w;
	bool friend operator<(P a,P b) {
		return a.w>b.w;
	}
}tmp;
vector<P>a[200001];
void dijkstra() {
	for(long long i=1;i<=n;i++)dist[i]=INT_MAX,v[i]=0;
	priority_queue<P>q;
	dist[st]=0;
	q.push({st,0});
	while(!q.empty()) {
		 tmp=q.top();
		 long long u=tmp.to;
		 q.pop();
		 if(v[u])continue;
		 v[u]=1;
		 for(int i=0;i<a[u].size();i++) {
		 	long long to=a[u][i].to,w=a[u][i].w;
		 	if(!v[to]&&dist[to]>dist[u]+w) {
		 	  dist[to]=dist[u]+w;
		 	  q.push({to,dist[to]});
			}
		 	
		 }
	}
}
signed main()
{
	cin>>n>>m>>st>>qq;
	for(int i=1;i<=m;i++) {
       int x,y,w;
       cin>>x>>y>>w;
       a[x].push_back({y,w});
       a[y].push_back({x,w});
	}
	dijkstra();
	for(int i=1;i<=qq;i++) {
	   long long k;
	   cin>>k;
	   cout<<dist[k]<<"\n";
	}
	return 0;
}

测试数据

问问 gesp也是捆绑测试吗

2025/6/28 09:44
加载中...