poj 3264 Command Network(最小树形图)

有一副有向图,要求从根节点起能访问到所有的结点,且路径最短。即求最小树形图。

算法位朱刘算法,

裸的最小树形图,用朱—刘算法解决,具体实现过程如下:算法一开始先判断从固定根开始是否可达所有原图中的点,若不可,则一定不存在最小树形图。这一步是一个很随便的搜索,写多搓都行,不加废话。第二步,遍历所有的边,从中找出除根结点外各点的最小入边,累加权值,构成新图。接着判断该图是否存在环。若不存在,则该图便是所求最小树型图,当前权为最小权。否则对环缩点,然后回到第二步继续判断。简化就是三个过程:找边—>找环—>缩点;


#include
#include
#include
#include
using namespace std;
const double inf=200000000;
const int maxn = 110;
typedef double type;
struct Point{
    double x,y;
}p[maxn];
struct Node{
    int u,v;
    type w;
}node[maxn*maxn];
int pre[maxn],id[maxn],vis[maxn],n,m;
type in[maxn];
double dis(Point a,Point b){
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
type mst(int root,int v,int e){
    type ret=0;
    while(true){
        for(int i=0;i



你可能感兴趣的:(poj,生成树,最小树形图)