
图论-生成树
文章平均质量分 71
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
poj 2377 Bad Cowtractors(最大生成树)
Bad CowtractorsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9317 Accepted: 3981DescriptionBessie has been hired to build a cheap internet network a原创 2013-08-03 23:45:47 · 1759 阅读 · 0 评论 -
uva 10816 - Travel in Desert(最小瓶颈生成树+最短路)
题目连接:10816 - Travel in Desert求出最小生成树,瓶颈值为n-1条边中最大那条,将所有权值大于瓶颈值的边舍去,剩下一张无向图,做一遍最短路。#include #include #include #include #include #include using namespace std;typedef pair pii;const原创 2015-09-11 20:38:47 · 921 阅读 · 0 评论 -
uva 11747 - Heavy Cycle Edges(生成树)
题目链接:uva 11747 - Heavy Cycle Edges不是最小生成树的边即为heavy cycle edges。#include #include #include #include using namespace std;const int maxn = 1005;const int maxm = 25005;struct Edge {原创 2015-09-11 21:23:06 · 639 阅读 · 0 评论 -
uva 12275 - Sensor network(生成树)
题目链接:uva 12275 - Sensor network先建立最小生成树,然后枚举边,加入树中,如果形成环,就将环生权值最小的边删除。#include #include #include #include #include using namespace std;typedef pair pii;const int maxn = 400;const原创 2015-09-11 21:33:59 · 744 阅读 · 0 评论 -
uva 1494 - Qin Shi Huang's National Road System(最小生成树)
题目链接:uva 1494 - Qin Shi Huang's National Road System建成最小生成树之后,枚举两节点,然后删除路径上权值上最大的边。#include #include #include #include #include using namespace std;const int maxn = 1005;struct Ed原创 2015-09-07 23:23:33 · 958 阅读 · 0 评论 -
uva 1537 - Picnic Planning(生成树)
题目链接:uva 1537 - Picnic Planning先剔除需要被控制度数的节点,我们记作根,然后对剩下的节点做最小生成树,如果剩下的联通分量数n大于K,则无解。如果选K条边还不能使各个分量联通也是无解的。接着从根连接的边中选出最小的边连入相应的联通分量,注意一个联通分量选一条,这样有n条,保证节点联通。然后如果度数还允许,考虑增加一条边,先预处理出根到各个节点的路径上权值最大原创 2015-09-12 22:42:12 · 1111 阅读 · 0 评论 -
uva 544 - Heavy Cargo(生成树)
题目链接:uva 544 - Heavy Cargo#include #include #include #include #include #include using namespace std;const int maxn = 205;const int maxm = 20005;struct Edge { int u, v, d; bool opera原创 2015-09-12 22:19:09 · 1029 阅读 · 0 评论 -
uva 1504 - Genghis Khan the Conqueror(生成树)
题目链接:uva 1504 - Genghis Khan the Conqueror类似次小成树,先根据已知边建立最小生成树。然后在此基础上,考虑未被选中的边,处理出两两节点间权值最小的边,即为替换最优边。处理的过程为枚举每个点做根,dfs回溯处理,并维护。#include #include #include #include #include #include原创 2015-09-12 22:27:00 · 1015 阅读 · 0 评论 -
uva 11865 - Stream My Contest(二分+有向最小生成树)
题目链接:uva 11865 - Stream My Contest二分带宽,然后判断最小生成树是否小于cost值。#include #include #include #include using namespace std;typedef long long ll;const int inf = 0x3f3f3f3f;const int maxn = 1原创 2015-09-07 23:10:42 · 939 阅读 · 0 评论 -
hdu 5441 Travel(生成树)
题目链接:hdu 5441 Travel类似与最小生成树的算法,将边和询问分别按照权值排序,每次枚举一个询问,将小于该询问的边全部链接,并且计算ans。#include #include #include #include using namespace std;typedef long long ll;const int maxn = 20005;con原创 2015-09-13 21:50:03 · 1004 阅读 · 0 评论 -
hdu 5483 Nux Walpurgis(最小生成树+dfs)
题目链接:hdu 5483 Nux Walpurgis解题思路先求一下最小生成树。然后枚举起点,遍历整棵树,维护树边能被替换的最小权值。代码#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#include <cstring>#include <vector>#include <algorithm>us原创 2015-10-11 21:54:41 · 693 阅读 · 0 评论 -
uva 10600 - ACM Contest and Blackout(次小生成树)
题目链接:uva 10600 - ACM Contest and Blackout求一遍最小生成树之后,枚举起点,求出两两点之间路径上权值最大边。然后用其他边替换,维护最小值。#include #include #include #include using namespace std;typedef pair pii;const int maxn = 105原创 2015-09-11 20:35:00 · 598 阅读 · 0 评论 -
uva 1265 - Tour Belt(生成树)
题目链接:uva 1265 - Tour Belt类似最小生成树算法,每次合并两个联通分量后,判断当前分量是否满足,满足则加上该分量的点数,这样最多做n-1次判断。#include #include #include #include #include #include using namespace std;typedef pair pii;const原创 2015-09-11 21:38:11 · 914 阅读 · 0 评论 -
uva 10369 - Arctic Network(最小生成树)
题目链接:10369 - Arctic Network题目大意:有n个前哨站,现在有两种通信技术去连接哨站,卫星技术和无线电技术,通过卫星技术需要一个卫星信道,现在已知有m个信道,问说连接所有哨站时,通过无线电技术连接的最长距离的最小值。(每个哨站已经设立好了接受装置,卫星通信无需考虑距离)解题思路:最短路问题,无需考虑联通整张图的最小距离,只需要记录下第n - m - 1原创 2013-10-12 15:44:27 · 1653 阅读 · 0 评论 -
uva 10048 Audiophobia(最小生成树)
题目链接:10048 - Audiophobia题目大意:有n个城市,和m条街道,每条街道有一个噪音值,q次去问,从城市a到城市b,路径上分贝值的最大值最小为多少。解题思路:与uva 10099的做法是一样的,可以参考一下。#include #include #include using namespace std;const int N = 10原创 2013-10-12 16:59:19 · 1872 阅读 · 0 评论 -
uva 10397 - Connect the Campus(最小生成树&并查集)
题目链接:10397 - Connect the Campus题目大意:给出n,然后再给出n个点的坐标,要连接着n个坐标,使得总距离最小,但是有m对点已经连接,输入m,和m组a和b表示a和b两点已经连接。解题思路:kruskal算法,每次将最短的边拿出来考虑,判断该边的两个端点是否联通,如果未联通,则加入改变;否则跳过。#include #include原创 2013-10-12 15:33:32 · 1632 阅读 · 0 评论 -
uva 10099 - The Tourist Guide(最小生成树)
题目链接:10099 - The Tourist Guide题目大意:有n个旅游景点,以及m条路,给出m条路的信息,包括连接的景点序号,限制人数,然后再给出起始点和终止点,以及总人数,问说需要多少次的运输才能使得所有人到达目的地。解题思路:这题因为以前做过一遍,所以知道有个坑点,就是导游每次必须跟团。我是用kruskal算法去做的,因为题目只要求说运输的次数最少,没有说要求原创 2013-10-12 16:28:20 · 2725 阅读 · 0 评论 -
uva 10034 Freckles(最小生成树Kruskal)
FrecklesIn an episode of the Dick Van Dyke show, little Richie connects the freckles on his Dad's back to form a picture of the Liberty Bell. Alas, one of the freckles turns out to be a scar, so原创 2013-07-25 01:37:01 · 1461 阅读 · 0 评论 -
fzu 1963 交通建设(kruskal)
题目链接:fzu 1963 1963 交通建设题目大意:略。解题思路:kruskal的变形,外填一个汇点0,将建造飞机场看成是于0点建立一条边,费用为一个飞机场的价格。然后就是裸的kruskal算法,不过要注意的是如果只有一个点与0点相连,那么就要判断该点的飞机场是否为必须建立的,如果不为必须建立的则要减掉。#include #include #incl原创 2014-03-29 20:28:23 · 1728 阅读 · 0 评论 -
hdu 4463 Outlets(最小生成树)
题目链接:hdu 4463 Outlets题目大意:给定N个点,以及P,Q,问说建立N-1条边联通N个点的最短长度,要求P,Q必须建立边。解题思路:最小生成树水题。#include #include #include #include #include using namespace std;const int maxn = 55;struct edge {原创 2014-11-17 22:58:26 · 969 阅读 · 0 评论 -
uva 534 - Frogger(最小生成树)
题目连接:uva 534 - Frogger#include #include #include #include using namespace std;const int maxn = 205;struct Point { double x, y, d; //Point(int x = 0, int y = 0, int d = 0): x(x), y(y),原创 2015-09-02 23:09:30 · 743 阅读 · 0 评论 -
uva 11183 - Teen Girl Squad(有向生成树)
题目链接:uva 11183 - Teen Girl Squad#include #include #include #include using namespace std;typedef long long ll;const int inf = 0x3f3f3f3f;const int maxn = 1005;struct DMST { struct Edge原创 2015-09-11 21:02:45 · 644 阅读 · 0 评论 -
uva 1395 - Slim Span(生成树)
题目链接:uva 1395 - Slim Span#include #include #include #include using namespace std;const int maxn = 105;const int inf = 0x3f3f3f3f;struct Edge { int u, v, d; bool operator < (const Edge原创 2015-09-11 21:46:54 · 464 阅读 · 0 评论 -
uva 10457 - Magic Car(最小瓶颈树)
题目链接:uva 10457 - Magic Car代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1005;const int inf = 0x3f3f3f3f;struct Edge { int u, v, w; Edge(int u原创 2015-10-30 23:42:47 · 695 阅读 · 0 评论