UVALive 7302 (最短路)】的更多相关文章

Probelm Terrorists 题目大意 给一张n个点,m条边的无向图.共有q个询问,每次询问u到v的最短路. n <= 100000 ,  n-1 <= m <= n + 50 , q <= 50000. 解题分析 注意到m的范围比较特殊,所以可以看成是一棵树加上若干条非树边. 将所有的非树边所连接的点取出来,每个关键点跑一次单源最短路. 对于一次询问u,v,其可能的答案路径为直接从树上跑,或者经过一个关键点中转. 参考程序 #include <cstdio>…
Delivering Goods UVALive - 7986(最短路+最小路径覆盖) 题意: 给一张n个点m条边的有向带权图,给出C个关键点,问沿着最短路径走,从0最少需要出发多少次才能能覆盖这些关键点 \(1 <= n <= 1000\) \(1 <= m <= 10^5\) \(1 <= w <= 10^9\) \(1 <= C <= 300\) 题解: 对所有的关键点建一个新图,对于任意两个关键点 若满足在原图中的最短路\(dis(0,u)+dis(…
// 二分+最短路 uvalive 3270 Simplified GSM Network(推荐) // 题意:已知B(1≤B≤50)个信号站和C(1≤C≤50)座城市的坐标,坐标的绝对值不大于1000,每个城市使用最近的信号站.给定R(1≤R≤250)条连接城市线路的描述和Q(1≤Q≤10)个查询,求相应两城市间通信时最少需要转换信号站的次数. // 思路:建议先阅读 NOI论文 <<计算几何中的二分思想>> // 直接献上题解吧: // 二分! // l的两端点所属信号站相同:…
layout: post title: 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树) author: "luowentaoaa" catalog: true mathjax: true tags: - Dijkstra - 最短路树 - 图论 - 训练指南 Warfare And Logistics UVALive - 4080 题意 ①先求任意两点间的最短路径累加和,其中不连通的边权为L ②删除任意一条边,求全局最短路径和的最大值 题解…
题目连接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=129723 题意: 给你一个n点m图的边 1到n有多条最短路,问你所有经过的边的总和*2是多少 题解: 对1,n分别求单源最短路径上spfa 枚举某条边是否为最短上的边 即 边权+disA[i] + disB[i] = 最短路长度,就是答案 #include<bits/stdc++.h> using namespace std; , M = 1e6+, m…
题意:动物要逃跑,工作人员要截断从START(左上角)到END(右下角)的道路,每条边权表示拦截该条道路需要多少工作人员.问最少需要多少人才能完成拦截. 通俗地讲,就是把图一分为二所造成消耗的最小值. 这里用最短路的方法解,主要是因为数据量太大,不能用最小割最大流还处理. 手动画一下这种“割”的形式,发现是从一条边到另一条边,即以边为“点”,在边与边之间见“边”,边上的权值为终点v(其实是一条边)的权值.(本来想直接用点权处理的,可coding的时候发现SPFA中的入队出队操作太繁琐,老老实实改…
题意:模拟了汽车的行驶过程,边上的权值为全速通过所消耗的时间,而起步(从起点出发的边).刹车(到终点结束的边).减速(即将拐弯的边).加速(刚完成拐弯的边)这四种不能达到全速的情况,消耗的时间为权值*2.问从起点到终点所消耗的最少时间. 这道题主要是建图,很复杂,无耻地照着书上的代码码了一遍.让状态搞糊涂了= = 注意: 1.grid[][][4]记录了点的上下左右四条边的权值,id[][][4][2]记录各个点. 2.到一个点的最短路可以是路过这个点再折返回来,e.g:1->2 c=17,2-…
题目链接:https://vjudge.net/contest/244167#problem/E 这题做了好久都还是超时,看了博客才发现可以用二分+最短路(dijkstra和spfa都可以),也可以用dijikstra先算一遍可以求的最大高度,再用dijkstra算一遍这个高度下的最短路,这个应该快一点. 题意:第一行输入n,m表示n个点,m条边,接下来m行,每行有四个数字u,v,h,w,其中u,v表示这条边连接的两个城市,h表示在这条边上货车可以通过的最大高度,w表示距离,最后一行输入三个数字…
题意:给定一个图,r 根横线, c 根竖线.告诉你起点和终点,然后从起点走,每条边有权值,如果是0,就表示无法通行.走的规则是:如果你在下个路要转弯,会使这段路的时间加倍,但是如果一条路同时是这样,那么也只算两倍.起点和终点他们相连的第一条边也算两倍.问你最短时间. 析:把每个点拆成 8 个点(r, c, dir, doubled)分别下一步走哪个方向,是不是要加倍,然后每次枚举上一条,和新边,枚举上一边是不是加倍之后的,然后判断是不是要转弯,然后计算加不加倍,最后跑一次最短路,就好了. 代码如…
题意: 给一个由n*m个正方形格子组成的矩形,其中每个格子的边都是可以走的,长度给定,规定:如果在进入该路前需要拐弯,或者走完该路需要拐弯,都是需要付出双倍距离的(每条路最多算2倍).问从起点到终点的最短路经长. 思路: 这个题目超级难搞,思路很简单,就是很麻烦!!!我将1个点4个方向的路长都记录下来,然后进行最短路,只要一个点的某个方向更新了,就进队.所有都考虑得差不多了,就是WA... 步骤 : (1)起点不进队,因为起点出发都需要双倍,况且,如果起点路长为0的话,其他点就不能路过起点了,所…