朴素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
T1:有点坑的模拟,考心细+代码能力T2:最小生成树 记得开long long,不然会全WA.. 莫名超时三个点,据学长说可以开并查集优化,叫做按秩排序..=-=现在木有网啊..哪天再看T3:dijkstra+堆处理 先说一下dijkstra好了 从所连的最小的号数开始,边权值分别为1.2.3.4....
分类:
其他好文 时间:
2014-07-27 10:45:42
阅读次数:
215
题意:给你一个传递闭包的矩阵,mp[u][v] = 1表示u可以到达v,为0代表不可到达,问你至少需要多少条边组成的传递闭包符合这个矩阵给出的关系分析:考虑一个强连通分量,如果这个分量有n个节点,那么至少只需要n条边皆可以满足传递闭包(因为此时形成环就可),所以求出所有的强连通分量,将他们缩成一个个...
分类:
其他好文 时间:
2014-07-27 10:15:32
阅读次数:
217
最短路
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 30972 Accepted Submission(s): 13345
Problem Description
在每年的校赛里,所有进入决赛的同学都会获...
分类:
其他好文 时间:
2014-07-26 17:18:02
阅读次数:
275
map函数辅助求解最短路径,dijkstra算法,邻接表表示。...
分类:
其他好文 时间:
2014-07-26 15:32:13
阅读次数:
248
Floyd算法计算每对顶点之间的最短路径的问题
题目中隐含了一个条件是一个人可以同时将谣言传递给多个人
题目最终的要求是时间最短,那么就要遍历一遍求出每个点作为源点时,最长的最短路径长是多少,再求这些值当中最小的是多少,就是题目所求
#include
using namespace std;
int n,x,p,t;
int m[120][120],dist[120][120],Max[12...
分类:
其他好文 时间:
2014-07-26 15:21:20
阅读次数:
214
HDU 1874 畅通工程续 (最短路径) Dijkstra算法和Floyd算法。...
分类:
其他好文 时间:
2014-07-26 02:41:46
阅读次数:
296
在复习资料中找到的对应不同类型的题目。想先从简单的题目入手,结果一上来就发现不对劲。感觉有点不简单呀。
之前也是碰到这种问题会畏首畏尾,因为,要计算两点之间的距离的。想着要不要先全部计算出来,放到数组里面分别调用。
但后来又想到不行,这样的时间复杂度更高了,n*(n+1)/2 的时间复杂度。就有点麻乱了。
通过参考网上其他的解答,发现他们也是一边算,一边找的。相比这就是简答题的优势吧。
然...
分类:
其他好文 时间:
2014-07-26 02:39:26
阅读次数:
214
#include
#include
#include
#include
#include
#include
using namespace std;
const int INF = 0x3f3f3f3f;//无穷大
const int maxn = 20;//顶点个数的最大值
int n;//顶点个数
int edge[maxn][maxn];//邻接矩阵
//Dijkstra算法用到的3个数...
分类:
其他好文 时间:
2014-07-26 02:29:56
阅读次数:
202