首页 > 其他分享 >ADRABR - Adrita and Her Bike Ride 题解

ADRABR - Adrita and Her Bike Ride 题解

时间:2023-08-25 13:56:05浏览次数:57  
标签:ver Her idx Adrita int 题解 st add dis

1.题目大意

题目传送门

2.思路

因为每条道路长均为 \(1km\),所以我们可以在建边时就加上走这条路的初始成本,即对于每条边的两端 \(a,b\) 和通行费 \(w\),我们直接 \(add (a,b,w+12)\)即可。

再就是由于是多组数据,所以我们在每次输入前要清空数组,然后跑一遍最短路模板即可。

3.代码

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#define int long long

using namespace std;

const int N = 1000010;
typedef pair <int, int> PII;

int n, m, ss, tt;
int h[N], w[N], e[N], ne[N];
int dis[N], st[N];
int idx;

void add (int a, int b, int c) {
	e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
}

int dijkstra (int s, int t) {
	memset (dis, 127, sizeof dis);
	dis[s] = 0;

	priority_queue <PII, vector <PII>, greater <PII> > p;
	p.push ({0, s});

	while (!p.empty ()) {
		auto t = p.top ();
		p.pop ();

		int ver = t.second, dit = t.first;

		if (st[ver]) {
			continue;
		}

		st[ver] = true;
		for (int i = h[ver]; i != -1; i = ne[i]) {
			int j = e[i];
			if (dis[j] > dit + w[i]) {
				dis[j] = dit + w[i];
				p.push ({dis[j], j});
			}
		}
	}

	return dis[t];
}

signed main () {
	int T;
	cin >> T;

	while (T --) {
		cin >> n >> m >> ss >> tt;
		memset (h, -1, sizeof h);
		memset (st, false, sizeof st);
		
		while (m --) {
			int a, b, c;
			cin >> a >> b >> c;
			add (a, b, c + 12);
			add (b, a, c + 12);
		}

		cout << dijkstra (ss, tt) << endl;
	}
	return 0;
}

标签:ver,Her,idx,Adrita,int,题解,st,add,dis
From: https://www.cnblogs.com/linbaicheng/p/17656738.html

相关文章

  • java.lang.NoClassDefFoundError问题解决方案
    骑士李四记录:场景在pom.xml中引入一个包,之后启动部署项目,出现java.lang.NoClassDefFoundError的问题。报错信息:解决方案:加入这段代码<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executi......
  • 国标视频平台EasyGBS视频能力平台Linux版内核启动报错端口占用的问题解决方案
    EasyGBS国标视频云服务是基于国标GB/T28181协议的视频能力平台,可实现的视频功能包括:实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等......
  • centos8无法安装问题解决
    1、centos使用yum或者dnf命令安装都失败,且连接互联网正常,如下图所示:2、可查看/var/log/dnf.log日志3、备份yum源,重新下载华为centos8版本软件仓库mv/etc/yum.repos.d/Centos*bak/curl-o/etc/yum.repos.d/CentOS-Base.repohttps://repo.huaweicloud.com/repository/conf/......
  • [AGC007D] Shik and Game 题解
    一道有意思的\(\text{dp}\)呀。思路我们容易发现,一个点最多会往回走一次。也就是每一个点最多被遍历三次。因此,我们可以考虑每个点的贡献。\[dp_i=\min_{j=1}^{i-1}dp_j+x_i-x_j+\max(2\times(x_i-x_{j+1}),T)\]其中,\(dp_i\)表示前\(i\)个金币全部取完,此时位于第\(i\)......
  • 『题解』JOISC2022B 京都観光 (Sightseeing in Kyoto)
    AtCoder题目链接Luogu题目链接观察题目,不自觉地想到了dp,但是再一看\(\text{1e5}\)数据范围,意识到大概是\(2^{\text{1e5}}\)的复杂度,绝望了……然后就很自然地想到了最优策略。(思路很巧妙但是我当时没想到。)考虑有三行(或三列),分别记为\(i,j,k\),如果\(j>i\landj>......
  • 求和 题解
    求和题目大意给定\(n,p\),求:\[\left(\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)^{i+j}\right)\bmodp\]多组数据。思路分析老规矩,先化式子:\[\begin{aligned}\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)^{i+j}&=\sum_{d=1}^n\sum_{i=1}^n\sum_{j=1}^nd^{\,i+j}\,[\gcd(i,j)=d]\......
  • Arithmetic Progression 题解
    ArithmeticProgression题目大意存在一个打乱了顺序的等差数列\(a\),你可以询问不超过\(60\)次,每次可以以以下两种方式之一进行询问:查询\(a\)中是否有严格大于\(x\)的数。查询\(a_i\)的值。你需要求出这个等差数列的首项和公差。思路分析比较有意思的题。看......
  • CF1850E Cardboard for Pictures 题解
    前言一个月前的一场悲剧qwq传送门没事干写的qwq热乎着的一道题,昨晚上刚考完,然而这是一场悲剧。。。。题解题目大意给定\(a_1~a_n\)和\(c\),求\((a_1+2\timesw)^2+(a_2+2\timesw)^2+...+(a_n+2\timesw)^2=c\)时\(w\)的最小值解析我们来化简一下这个式子:\((a_......
  • NOIP 2023 周赛 3 题解
    A-Permutationsummarization构造一个\(1\dotsn\)的排列使\(\prod\limits_{i=1}^n\operatorname{lcm}(p_i,p_{(i\bmodn)+1})\)最大。solution不难发现上式最大为\(\prod\limits_{i=1}^ni^2\),即让所有\(\operatorname{lcm}(x,y)=x\timesy\),那么只要使相邻两个数互质......
  • 题解 ABC309Ex【Simple Path Counting Problem】
    好好玩的题。设普通生成函数\(F_i\),其中\([z^k]F_i\)表示从所有起点走到\((i,k)\)的方案数。特别地,\([z^k]F_1=\sum\limits_{a\inA}[a=k]\)。注意到\(F_i=(z^{-1}+1+z)F_{i-1}\)几乎成立,但是在\([z^1]F_i\)和\([z^M]F_i\)处不成立。尝试对\(F_i\)进行改造:\[[z^k......