首页 > 其他分享 >SP3881 题解

SP3881 题解

时间:2023-11-19 10:13:13浏览次数:35  
标签:int 题解 100005 push pair SP3881 dis

前置知识

最短路。

思路

这就是一道很简单的最短路板子,太良心了,用堆优化的 Dijkstra 就能过。相信大家都会这个,我就不介绍了。

AC CODE

#include<bits/stdc++.h>
using namespace std;
int dis[100005],n,m,s,t,vis[100005];
vector<pair<int,int> >e[100005];
inline void dijkstra(int start){
	priority_queue<pair<int,int> >q;
	q.push((pair<int,int>){0,s});
	for(int i=0;i<=n;i++)dis[i]=0x7fffffff,vis[i]=0;
	dis[s]=0;
	while(!q.empty()){
		int u=q.top().second;
		q.pop();
		if(vis[u])continue;
		vis[u]=1;
		for(auto x:e[u]){
			int v=x.first,w=x.second; 
			if(dis[v]>dis[u]+w){
				dis[v]=dis[u]+w;
				q.push((pair<int,int>){-dis[v],v});
			}
		}
	}
}
int main(){
    int T;
    cin>>T;
    while(T--){
		cin>>n>>m>>s>>t;
		for(int i=1,u,v,w;i<=m;i++){
			cin>>u>>v>>w;
			e[u].push_back((pair<int,int>){v,w});
			e[v].push_back({u,w});
		}
		dijkstra(s);
		if(dis[t]==2147483647)puts("NONE");
		else cout<<dis[t]<<"\n";
	}
	return 0;
}

标签:int,题解,100005,push,pair,SP3881,dis
From: https://www.cnblogs.com/xdh2012/p/17841654.html

相关文章

  • P7907 [Ynoi2005] rmscne 题解
    P7907[Ynoi2005]rmscne题解退役前的最后一篇题解,献给Ynoi。再见了各位。题目大意给定一个长度为\(n\)的序列和\(m\)次查询,对于每次查询,给定\(l,r\),求出一个最短的子区间\([l',r']\),满足所有在区间\([l,r]\)中出现的数也在\([l',r']\)中出现过。题解题还是很......
  • P3412 仓鼠找sugar II 题解
    P3412仓鼠找sugarII题解大水题一个题目大意给定你一个树,设\(f_{u,v}\)表示在树上随机游走的情况下从\(u\)走到\(v\)的期望步数,求\(\displaystyle\frac{\sum_{i=1}^n\sum_{j=1}^nf_{i,j}}{n^2}\)。题解不难想到dp,不过\(1e5\)的范围差点让我怀疑我\(O(n......
  • P7775 [COCI2009-2010#2] VUK 题解
    链接这道题卡了我$40$多分钟。其实就是跑两遍广搜,第一遍算出每个点距离树的最小距离,第二遍开个优先队列,算出逃回窝的途中最大可能的离它最近的树的距离的最小值。接下来重点讲一下第二遍广搜。首先,我们要知道,如果我们用queue,那么最先到的点不一定是最优的。所以,我们需要......
  • CF391D1题解
    题目链接题意简述给出若干条平面上线段,找出最大的正+形边长多少。思路不难,但是判断两直线相交要考虑全面。数据不大不多,暴力直接过了。代码#include<bits/stdc++.h>usingnamespacestd;typedefstructline{intsx,sy;intex,ey;};intN,M;linexl[120......
  • [ABC326D] ABC Puzzle 题解
    题目链接解法分析这个问题是一个经典的排列谜题,通过回溯算法来穷举所有可能的字符排列,然后验证是否满足行和列约束。这个解决方案可以用于解决类似的谜题,其中需要满足一定的排列条件。通过仔细考虑约束条件,可以加快解决问题的速度,减少不必要的计算。更详细的我写在代码里了。......
  • P2678 跳石头 题解
    P2678跳石头链接这道题其实很水我们二分最长距离,最后用$check$函数判断合不合法一下是核心代码$check$函数这样写:boolcheck(intx){ intlast=0,tot=0; for(inti=1;i<=n;i++){ if(a[i]-last<x)tot++; elselast=a[i]; } if(len-last<x)tot++; returntot<......
  • CF1552D题解
    CF1552D题解思路首先,$a_i$的正负不重要,如果$a_i=b_j-b_k$,那么就有$-a_i=b_k-b_j$,读入时将$a_i$全部转化为正数。若满足$a_i+a_j+\ldots+a_k$,那么就可以构造出$b$序列,否则不行。从左到右遍历一遍$a$序列,动态规划推出所有可以组成的和,并判断是否满足上式,时间复杂度$O......
  • CF985C 题解
    CF985C题解思路由题意得知,现在有$n\timesk$块木板需要组装成$n$个木桶,每个木桶由$k$块板组成,容量服从短板原理,要求容量差不得超过$I$,求最大容量和。不管采用什么方法,无疑我们首先需要将板长(数组$a$)从小到大排列。利用贪心算法。先找出与$a_0$的长度差不超过$l$的......
  • UVA10652 Board Wrapping 题解
    LinkUVA10652BoardWrappingQuestion给出\(N\)个矩形,求面积最小的凸多边形能包住所有矩形求矩形面积占凸多边形面积的百分比Solution把矩形的四个顶点拿出来,就可以转化成凸包裸题了Code#include<bits/stdc++.h>usingnamespacestd;constdoubleeps=1e-9;constd......
  • NEFU OJ Problem1487 时空乱流题解
    时空乱流Problem:ETimeLimit:1500msMemoryLimit:65535KDescription星际飞行员Alice在一次航行中遭遇了时空乱流,时空乱流将导致Alice乘坐的飞船在n个位面之间穿梭。星际宇航局管理员Bob收到了Alice的求救信号,决定在某些位面上设立监测站,当Alice进入某个已经设立监......