GESP:2025-3月等级8-T1-上学

时间限制 : 1 秒

内存限制 : 128 MB

C 城可以视为由 n个结点与 m条边组成的无向图。这些结点依次以1,2,....n标号,边依次以 1,2...m标号。第i条边(1<=i<=m )连接编号为ui 与vi的结点,长度为li米。 小 A 的学校坐落在 C 城中编号为 s的结点。小 A 的同学们共有 q位,他们想在保证不迟到的前提下,每天尽可能晚地出门上学。但同学们并不会计算从家需要多久才能到学校,于是找到了聪明的小 A。第 i位同学(1<=i<=q )告诉小 A,他的 家位于编号为hi 的结点,并且他每秒能行走 1 米。请你帮小 A 计算,每位同学从家出发需要多少秒才能到达学校呢?

输入

第一行,四个正整数n,m,s,q ,分别表示 C 城的结点数与边数,学校所在的结点编号,以及小 A 同学们的数量。 接下来m行,每行三个正整数ui,vi,li ,表示 C 城中的一条无向边。 接下来q行,每行一个正整数hi,表示一位同学的情况

输出

共q行,对于每位同学,输出一个整数,表示从家出发到学校的最短时间。

样例
输入
复制代码
5 5 3 3
1 2 3
2 3 2
3 4 1
4 5 3
1 4 2
5
1
4
输出
复制代码
4
3
1
提示

数据范围

复制代码
对于 20% 的测试点,保证q=1 。

对于另外20 % 的测试点,保证1<=n<=500 ,1<=m<=500 。
对于所有测试点,保证1<=n<=2 * 10^5 ,1<=m<=2 * 10^5 ,1<=q<=2 * 10^5,1<=ui,vi,s,hi<=n ,1<=li<=10^6 。保证给定的图联通。

---------------------------------------------------------------------------------------------------------------------------------思路:

以学校为原始的点,Dijkstra算法求学校到每一个点的时间。

代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=200002;
int n,m,s,t,dis[N];
bool v[N];
struct node
{
	int v,e;
};
vector<node> q[N];
priority_queue<pair<int,int>>Q;
int main()
{
	scanf("%d%d%d%d",&n,&m,&s,&t);
	for(int i=1;i<=m;i++)
	{
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		q[a].push_back(node{c,b});
		q[b].push_back(node{c,a});
	}
	for(int i=1;i<=n;i++)
	{
		dis[i]=INT_MAX;
	}
	dis[s]=0;
	memset(v,0,sizeof(v));
	while(!Q.empty()) Q.pop();
	Q.push(make_pair(0,s));
	while(!Q.empty())
	{
		int wz=Q.top().second;
		Q.pop();
		v[wz]=1;
		for(int i=0;i<q[wz].size();i++)
		{
			if(dis[q[wz][i].e]>dis[wz]+q[wz][i].v)
			{
				dis[q[wz][i].e]=dis[wz]+q[wz][i].v;
				if(!v[q[wz][i].e])
				{
					Q.push(make_pair(-dis[q[wz][i].e],q[wz][i].e));
				}
			}
		}
	}
	for(int i=1;i<=t;i++)
	{
		int d;
		scanf("%d",&d);
		printf("%d\n",dis[d]);
	}
	return 0;
}
相关推荐
1***s63233 分钟前
C++移动语义优化
开发语言·c++
稚辉君.MCA_P8_Java38 分钟前
Gemini永久会员 Go 实现动态规划
数据结构·后端·算法·golang·动态规划
快手技术1 小时前
快手 & 南大发布代码智能“指南针”,重新定义 AI 编程能力评估体系
算法
Murphy_lx1 小时前
C++ std_stringstream
开发语言·c++·算法
Mr.Winter`1 小时前
基于Proto3和单例模式的系统参数配置模块设计(附C++案例实现)
c++·人工智能·单例模式·机器人
CoovallyAIHub2 小时前
超越YOLOv8/v11!自研RKM-YOLO为输电线路巡检精度、速度双提升
深度学习·算法·计算机视觉
哭泣方源炼蛊2 小时前
HAUE 新生周赛(七)题解
数据结构·c++·算法
q***64972 小时前
SpringMVC 请求参数接收
前端·javascript·算法
Lwcah2 小时前
Python | LGBM+SHAP可解释性分析回归预测及可视化算法
python·算法·回归
小此方2 小时前
从零开始手搓堆:核心操作实现 + 堆排序 + TopK 算法+ 向上调整 vs 向下调整建堆的时间复杂度严密证明!
开发语言·数据结构·算法