Kruskal Algorithm is based on Union-Find - quite intuitive. #include <vector> #include <iostream> #include <queue> #include <unordered_map> #include <unordered_set> using namespace std; struct Edge { Edge() :s(), t(), d() {}…
An intuitive Prim algorithm impl. #include <vector> #include <iostream> #include <queue> #include <unordered_map> #include <unordered_set> using namespace std; struct Edge { Edge() :s(), t(), d() {} Edge(unsigned rs, unsigned…
Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22335   Accepted: 7922 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spanning Tree): Consider a connected, undirected graph G =…
并查集+kruskal==>MST 效率很低 #include <iostream> using namespace std; #define MAX 105 //自己设置最大值 // father[x]表示x的父节点 int father[MAX]; // rank[x]表示x的秩 int rank[MAX]; typedef struct { int i,j; int distance; } E; E edges[MAX*MAX]; // 初始化 void Make_Set(int…
一开始觉得是网络流..仔细一看应该是最短路,再看数据范围..呵呵不会写...这道题是最大生成树+最近公共祖先.第一次写..表示各种乱.. 因为要求运输货物质量最大,所以路径一定是在最大生成树上的.然后就用LCA求两点之间的能运输的最大重量.预处理O(nlogn),查询O(logn). ---------------------------------------------------------------------------------------- #include<cstdio>…
Kruskal算法: void Kruskal ( ) {     MST = { } ;                           //边的集合,最初为空集     while( EdgeAccepted < NumVertex - 1                           && E中还有边 )  //MST中边数不到V-1     {         E(V, W) = Min( E );               //最小堆         Delet…
http://poj.org/problem?id=1679 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 30120   Accepted: 10778 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spanning Tree): Consider a…
https://github.com/xtaci/algorithms //已实现 ( Implemented ): Array shuffle https://github.com/xtaci/algorithms/blob/master/include/shuffle.h Prime test(trial division) https://github.com/xtaci/algorithms/blob/master/include/prime.h Prime test(Miller-Ra…
题目要求最长边最小的生成树.好吧,这就是一道kruskal MST题. #include <bits/stdc++.h> const int maxn = 50000; const int maxm = 100000; using namespace std; struct tEdge { int u, v; int t; bool operator < (const tEdge &y) const { return t < y.t; } }; tEdge edge[max…
小书匠 Graph 图论  重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图论中常用算法弄个明白在写这部分. 图论常用算法看我的博客: 下面我将使用NetworkX实现上面的算法,建议不清楚的部分打开两篇博客对照理解. 我将图论的经典问题及常用算法的总结写在下面两篇博客中: 图论---问题篇 图论---算法篇 目录: * 11.2最小/最大生成树问题 * 11.2.1…