朴素Dijkstra不需要用到堆,每次找最小值都得遍历一遍,时间复杂度较高。
点是从编号0到编号n-1的n个点。
以下是模板:
int Dijkstra(int a,int b) //a是起点,b是终点
{
bool visited[maxn]; // 记录访问点
int pos = a, min, dist[maxn]; // pos是个标记点,标记每次最小边对应的...
分类:
其他好文 时间:
2014-07-27 11:22:42
阅读次数:
196
题意:若干个人开车要去park聚会,但是park能停的车是有限的,为k。所以这些人要通过先开车到其他人家中,停车,然后拼车去聚会。另外,车的容量是无限的,他们家停车位也是无限的。求开车总行程最短。
就是求一最小生成树,但是对于其中一个点其度不能超过k。
思路:
1. 将park点取出 将剩下的点求出最小生成树 出现i个联通块
2. 再每个块中选择与park点相邻的最小边...
分类:
其他好文 时间:
2014-07-22 23:45:38
阅读次数:
281
题目:poj3020
题意:给出一个图,让你用最少的1*2的纸片覆盖掉图中的所有*出现过的地方。基本裸的最小边覆盖。
分析:
最小边覆盖 = 点总数 - 最大匹配
所以就是转化为求最大匹配。
跟前面一道题目很相似,也是相同的建图方法,奇偶性建图。
#include
#include
#include
#include
#include
#inc...
分类:
其他好文 时间:
2014-07-17 10:21:44
阅读次数:
157
枚举最小边进行kruskal。#include #include using namespace std;#define maxn 120#define maxm 10000struct edge{ int u,v,w;}e[maxm];int p[maxn],n,m;int find(int...
分类:
其他好文 时间:
2014-07-12 14:37:52
阅读次数:
250
求给定起点到终点的路径中,最小边权的最大值
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define ll __int64
#define mod 1000000007
using namespace st...
分类:
其他好文 时间:
2014-06-27 08:29:49
阅读次数:
251
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1050题意:给出一个带权图。求一条s到t的路径使得这条路径上最大最小边的比值最小?思路:将边排序。枚举最小边,然后将边一个一个插到并查集里,s和t联通时计算更新答案。struct node{...
分类:
其他好文 时间:
2014-06-23 06:13:19
阅读次数:
221
给定一个无向图,求s到t间的一条路径,使得该路径上最大边和最小边的比值最小
将边按边权大小排序后,直接枚举枚举一个区间[ i , j ] (1
#include
#include
#include
#include
#define N 100000
#define INF 50000
using namespace std;
int f[N], n, m, i, j, k, ...
分类:
其他好文 时间:
2014-06-05 12:44:15
阅读次数:
230
Problem Description
XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在上面的Flycar限制了固定的Speed,同时XX星人对 Flycar的“舒适度”有特殊要求,即乘坐过程中最高速度与最低速度的差越小乘坐越舒服 ,(理解为SARS的限速要求,flycar必须瞬间提...
分类:
其他好文 时间:
2014-05-16 01:43:49
阅读次数:
270
题意:找出一个图的生成树中最大边权值和最小边权值差最小的值。题解参见:http://blog.csdn.net/sdj222555/article/details/7698978每次枚举最小边,然后求生成树,更新结果。
1 //Accepted 200 KB 94 ms 2 //kr...
分类:
其他好文 时间:
2014-05-10 03:23:43
阅读次数:
338
HDU 4571
大概题意:n个点(
解法:
容易看出应该用spfa和dp来解。关键时对visit和pass点的处理。
通过floyd预处理出visit每个点对之间的最小边消耗。然后,加一个超级源点和一个超级终点。超级源点负责pas点s能够到达的点,超级终点负责那些能越过e的点
由于visit的点的moneyp值必须严格升序所以也可以拓扑之后dp
不能用dij,因为本题时求最长...
分类:
其他好文 时间:
2014-05-08 17:12:27
阅读次数:
408