最短路
Lifel
dcoi 蒟蒻一枚 欢迎交流~~~qq:1627767186
展开
-
yk1 T3 SPFA
题目大意: 有n条联通的边,给出每条边两个端点的坐标和每条边燃烧所需要的时间.只能从木棍的两端点火,而不能从木棍的中间点火。如图,不能在 A 点点火,但在 C 点或 B 点点火都是充许的。点火后,火会沿着木棍向前燃烧(每根都有自己的燃烧速度),并能点燃与它相接的其它木棍. 分析:肯定不能直接建图,为了更好的处理中间点的情况,将一条边拆成两条,然后建图.转换成图,+特技原创 2017-03-21 13:26:12 · 403 阅读 · 0 评论 -
vijos1082 丛林探险(最短路+搜索)
题目大意:一个无向图中每一条路有两个属性:体力和路径长.给出一个最大体力值k在满足不大于最大体力值的情况下求一条最短路径. 数据范围:n(<=5000) m(<=40000) 分析:以体力值跑一边最短路,因为m+n只有45000,所以考虑搜索每一条从s->t的路径. 并进行剪枝: {可行性剪枝:若此时消耗的体力值+下一条路消耗的体力值>最大体力值 最优化剪枝:若此时走过的路径长>原创 2017-02-27 19:31:52 · 448 阅读 · 0 评论 -
vijos 1053 spfa 判断负环
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<queue>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;i原创 2017-02-23 22:13:21 · 330 阅读 · 0 评论 -
codevs 4175 二分+spfa判断
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<queue>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;i原创 2017-02-23 22:12:18 · 307 阅读 · 0 评论 -
vijos 1046 最小环
这题想出来了就很简单,其实就是对弗洛伊德算法的一个变形.所以理解算法很重要啊!!! Floyd中的:dis[i][j] 实际上是压缩了一维状态 dis[k][i][j] 中间最大点为k时的值 同理对于这题我们在不方便求环的情况下同样可以选择设:环中的最大点为K ans=dis[i][j]+G[i][k]+G[j][k];Code:#include<iostream>#in原创 2017-05-27 12:05:07 · 528 阅读 · 0 评论 -
美团测试题 T3
美团这个卖外卖的还考这些~~长见识! 题目描述 给定一个n个点m条无向边的连通图,每条边长度均为1 现在要求你删除尽量多的边,使得从s1到t1的最短路径不超过l1,并且s2到t2的最短路径不超过l2。 如果没有满足条件的方案,输出-1。 输入格式 第一行输入两个正整数n,m表示无向图的点数和边数。 接下来m行每行两个整数a,b表示节点a和节点b之间有一条原创 2017-07-17 20:33:23 · 2198 阅读 · 1 评论 -
P1730 Floyed 最小密度路径
题目大意:给出一张有N个点M条边的加权有向无环图,接下来有Q个询问,每个询问包括2个节点X和Y,要求算出从X到Y的一条路径,使得密度最小(密度的定义为,路径上边的权值和除以边的数量)。分析: 数据范围不大,询问比较多,考虑用dp直接算出所有点对的答案.因为 密度=val/R所以考虑f[x][y][R] 为x=>y 经过R条边的最小值 ,ans=f[x][y][R]/R 状态转移为: f[i原创 2017-07-20 08:00:16 · 624 阅读 · 0 评论 -
集训考试1
T1: 题目大意:有n个点,使它们与某个点直接或间接相连 题解:裸Kruskal#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=原创 2017-09-11 16:13:51 · 305 阅读 · 0 评论