ACM_最小生成树
yiqzq
人生如此复杂,机会多得像稠密图,我们没理由认输。尽管我们走不了最短路,但图仍是连通图,TLE之前,没有一个节点叫失败。
展开
-
uva1151 Buy or Build (最小生成树+子集枚举)
前提知识:子集枚举 题意:平面上有n个点(1<=N<=1000),你的任务是让所有n个点连通,为此,你可以新建一些边,费用等于两个端点的欧几里得距离的平方。 另外还有q(0<=q<=8)个套餐,可以购买,如果你购买了第i个套餐,该套餐中的所有结点将变得相互连通,第i个套餐的花费为ci 求最小花费。思路:最简单直接的做法就是先求出一个最小生成树,然后依次枚举套餐的不同选法(有2^q种),然后将套原创 2018-05-09 00:08:53 · 186 阅读 · 0 评论 -
uva 1395Slim Span(最小生成树变形)
题意:给出有n个节点的图,求最大边的值-最小边的值尽量小的生成树。思路:就和紫书上讲的一样。先对边进行预处理排序。然后枚举左区间L,然后对于每个L,枚举R(右区间),如果是一棵树,那么这个区间上的最小值就是W[r]-W[l],(因为是按w的大小排过序的)求出在[L,R]区间上的最小值。一开始以为是对于每一个枚举的L,R的枚举是要枚举到最后的m(边的长度),然后就超时了。后来仔细一想,其实并不需要,只原创 2018-05-08 16:20:01 · 178 阅读 · 0 评论 -
UVALive 6837 There is No Alternative(MST+暴力)
题意:给定一个n个顶点m条边的连通图,让你求这个图的最小生成树中不能被其它边取代的边。不能被取代的边是指:若该边不取的话,就无法得到最小生成树(具体可以参见题目样例)。输出这样的边的总数目及其权值和。思路:由于点的个数最多只有500,所以可要求出任意一棵最小生成树,然后暴力枚举每条边,判断如果没有这条边能不能形成最小生成树,如果不能的话,就要计算这条边。#include <cst...原创 2018-05-07 12:48:45 · 171 阅读 · 0 评论 -
最小生成树prim算法——堆优化模板(邻接矩阵存储)
#include <bits/stdc++.h>using namespace std;const int inf = 0x3f3f3f3f;int n, m;int dis[105], vis[105];struct node { int v, dis; node(int a, int b): v(a), dis(b) {}; bool operator <(co原创 2018-04-12 23:35:36 · 875 阅读 · 0 评论 -
继续畅通工程(最小生成树)
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=1879 有两种方法:遇到已经修好的路,就将费用变为0运用结构体的二级排序(记得要把情况写全,不然就wa了) 方法一代码:#include #include #include #include #include #include #include #include #原创 2018-01-25 14:31:36 · 315 阅读 · 0 评论 -
畅通工程再续 (prim算法)
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=1875 代码#include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#define eps 1e-8#原创 2018-01-25 12:53:19 · 400 阅读 · 0 评论 -
最小生成树prim算法模板
#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;const int inf = 0x3f3f3f3f;int n, m;int dis[105], vis[105];int mp[105][105];int sum = 0;void dij() { int ans = 0; sum=0; while(ans...原创 2017-12-28 10:49:30 · 243 阅读 · 0 评论 -
最小生成树kruskal算法模板
#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>#include <math.h>#include <ctype.h>#include <map>#include <set>#include <vector>#include <queue>#define inf 0x原创 2017-12-27 21:25:53 · 272 阅读 · 0 评论 -
hdu 4786 Fibonacci Tree (最小生成树)
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=4786题意:一共n个点m条边,每条边有个权值1代表白边,0代表黑边,求能否建一个生成树,使得白边的数量是一个斐波那契数列思路:求得是白边的数,可以求出白边的上限与下限,再在这个区间内找有没有属于斐波拉契数列中的数,求上下限时用kruskal算法,优先选用白边,求出白边数的上限,优先选用黑边,求出白边...原创 2018-10-11 22:23:38 · 210 阅读 · 0 评论