生成树
KIDGINBROOK
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
zoj 1406 jungle roads
题意就是要求最小生成树,用的kruskal #include #include int p[30],n,x1; struct edge { int u,v,w; }ed[100]; int get(int x) { if(p[x]==x) return x; else return p[x]=get(p[x]); } void uni(int x,int y) { in原创 2013-08-09 10:13:27 · 578 阅读 · 0 评论 -
hdu 1879 继续畅通工程
主要思路就是先把已存在的道路用并查集并起来,再将排序后的且不存在的边遍历一遍,若边的两顶点不在一个集合内,则将两顶点并起来且将费用cost加上该边的权值 另外在网上看到另一种好的思路就是将已存在的边的权值置为0,然后进直接用最小生成树算法 #include #include #include using namespace std; int p[105],n,m; struct ed原创 2013-08-07 14:09:47 · 649 阅读 · 0 评论 -
zoj 1542 Network
题目大意是将集线器连起来成一棵树,且最长的边必须是所有方案中最小的。 对于一个图的最小生成树来说,它的最大边满足在所有生成树的最大边里最小。因为去掉最小生成树的最长边后形成两个集合,无论是什么样的生成树都必须要在这两个集合间有边,而刚刚去掉的那条边正是这两个集合间最短的(否则可以换成一条更短的形成一棵更小的生成树,矛盾),所以直接求最小生成树即可。 #include #include in原创 2013-08-07 14:44:57 · 531 阅读 · 0 评论 -
poj 1679 The Unique MST 次小生成树算法
题目大意是判断一个图的最小生成树是否唯一 求出次小生成树,若次小生成树的权值不等于最小生成树,则唯一,若相等,则不唯一 #include #include int map[110][110],max[110][110],p[110],low[110],n,m,vis[110][110]; /*max[i][j]表示最小生成树中从i到j的路径中最长的边,map是边,p[i]是prim每原创 2013-08-09 13:27:56 · 768 阅读 · 0 评论 -
关于生成树 次小生成树
1.对于最小生成树的任何一条边e,将它去掉后形成两个集合u和v,则e是u,v两集合间所有边中最小的(假设不是,则可以把e去掉换成一条更小的边,从而形成一棵更小的生成树,矛盾) 2.在最小生成树中的第K长边是所有生成树中第K长边的最短边。设该边为e,将它去掉后形成两个集合u和v,若是生成树,那么在u和v间一定有边,所以加上一条边要比e大,此时将新生成树的边排序,在最小生成树中比e大的边有k-原创 2013-08-11 14:27:29 · 1043 阅读 · 0 评论 -
hdu 4081 Qin Shi Huang's National Road System 生成树
题目大意:秦始皇修路,要求n个城市连通,然后有一个人可以帮忙修一条不花费的路,这个人希望这条路连接的两个城市的人数总和尽量大,所以要求这条魔法路连接的两个城市人数总和除以秦始皇需要修的路的花费这个值最大。 和求次小生成树的代码很类似,先说一下思路,先求最小生成树,然后枚举每条边当做魔法路,则分子确定了(两个城市人数总和),则只需修建其他路花费最小即可,①若该魔法路是最小生成树里的原创 2013-09-19 22:59:59 · 587 阅读 · 0 评论 -
hdu 4786 Fibonacci Tree 生成树
先黑边优先做一次生成树得到白边的原创 2014-04-16 16:51:24 · 554 阅读 · 0 评论 -
codeforces 1095F Make It Connected 最小生成树
F. Make It Connected time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an undirected graph consisting ofnnvertices....原创 2019-04-29 16:46:33 · 485 阅读 · 0 评论
分享