算法之最小生成树
code_mryxj
这个作者很懒,什么都没留下…
展开
-
poj2485(prime)
#include<cstdio>#include<cstring>using namespace std;int M[510][510],N,T,book[510],dist[510];int Prime(int cur){ memset(book,0,sizeof(book)); book[cur]=1; dist[1]=0; int Min,MaxS=-原创 2015-06-01 14:27:58 · 454 阅读 · 0 评论 -
poj1797
和poj2253对应,这个求 两个点之间路劲 最短那条边的最大化。可以用 变形的dijkstra ,注意这题数据比较大floyed复杂度太高,不能用,还可以转换成 最大生成树 输出最小边(最佳)。 dijkstra#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int inf=999原创 2015-08-22 00:16:15 · 679 阅读 · 0 评论 -
poj1251(prime()+读取字符bug)
prime()算很好写的算法,然后这题被自己傻逼的输入给坑了,scanf读到空格后结束,空格到了buff缓冲区,但是没读走,下次直接从缓冲区读的是空格等字符。所以这里,可以在每个scanf后面加个getchar(),或是 像%c 前面留个空格。 好吧 ,我承认题目的输入方式 我也是看别人题解才会的。。。。太弱了#include<cstdio>#include<iostream>#include原创 2015-07-20 00:11:03 · 467 阅读 · 0 评论 -
hdu1875(prime())
注意double 类型 ,别的没神马特别!#include<cmath>#include<cstdio>#include<cstring>#include<iostream>using namespace std;struct Node{ double x,y;}node[110];double M[110][110],dist[110];bool visit[110];原创 2015-07-20 00:18:01 · 481 阅读 · 0 评论 -
hdu1102(prime)
有一点特别,那几个点之间已经建好桥,就改变他们之间距离为0就好#include<cstdio>#include<cstring>#include<iostream>#define inf 99999999using namespace std;int M[110][110],dist[110],n;bool visit[110];int prime(int cur){ mem原创 2015-07-20 00:21:49 · 423 阅读 · 0 评论 -
hdu1223(kruskal)
给的是每两个城市和权值,正好方便用kruskal算法输入。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;struct Node{ int s,e,v;}node[10500];int father[110],n;void init(){原创 2015-07-20 00:14:53 · 799 阅读 · 0 评论 -
poj2031(prime()double printf 不能用%lf)
大致题意:就是给出三维坐标系上的一些球的球心坐标和其半径,搭建通路,使得他们能够相互连通。如果两个球有重叠的部分则算为已连通,无需再搭桥。求搭建通路的最小费用(费用就是边权,就是两个球面之间的距离)。解题思路:不要被三维吓到了,其实就是图论的最小生成树问题球心坐标和半径是用来求 两点之间的边权 的,求出边权后,把球看做点,用邻接矩阵存储这个无向图,再求最小生成树,非常简单的水题。把球A和球B看做无向原创 2015-06-15 20:32:49 · 562 阅读 · 0 评论 -
poj1287(prime)
题意稍有变形,就是每两点之间,又不之一条长度的路,但是没有方向,也就是你做邻接矩阵图,选小的当双向精度如就好了。#include<cstdio>#include<cstring>using namespace std;int P,R;int M[210][210],book[210],dist[210];int Prime(){ int sum=0; memset(boo原创 2015-06-01 17:14:24 · 484 阅读 · 0 评论 -
最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)(转)
原网址 带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法;有向图的最短路径算法有dijkstra算法和floyd算法。 生成树的概念:联通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树 生成树是联通图的极小连通子图。所谓极小是指:若在树中任意增加一条边,则 将出现一个回路;若去掉一条边,将会使之编程非连通图。生成树各边的权 值总和转载 2015-05-31 08:23:40 · 997 阅读 · 0 评论 -
poj3026(bfs+prime)
ACM博客_kuangbin 新博客kuangbin.net 人一我百,人十我万!追逐青春的梦想,怀着自信的心,永不放弃! by kuangbin 新博客 kuangbin.net POJ 3026 Borg Maze(bfs+最小生成树) Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6原创 2015-06-01 20:34:46 · 749 阅读 · 0 评论 -
poj1258(prime水题)
标准最小生成树.#include<cstdio>#include<cstring>using namespace std;int M[210][210],book[210],dist[210],N;int Prime(int cur){ int sum=0; dist[1]=1; memset(book,0,sizeof(book)); book[cur]=原创 2015-06-01 14:51:41 · 571 阅读 · 0 评论 -
poj2253
题意:青蛙要从点1出发到点2去,每条边之间距离为权值,中间可能经过很多点,有不同路径,问每条1到2可行路中某一条路径的最大值的最小情况是多少。类似最短路问题,更改一下几个变量定义,用dijkstra,floyed都可以做,也可以等价求最小生成树里最大边的问题。 dijkstra 这里dist[i]定义是,第i个点到起点路径中最大边的边,由于求的是最小的情况,松弛还是用每次确定的最短边进行松弛!#原创 2015-08-21 21:57:08 · 344 阅读 · 0 评论