其中:6105(節點個數) 7035(邊數)
0(id) 1609(起始邊) 1622(終邊) 57.403187(權重)
//#include "stdafx.h"
#include "time.h"
#include
#include
#include
using namespace std;
static
int nodenumber; //圖頂點的個數
static
int edgenumber; //圖邊的個數
#define path "e://dataset//mapset//mincreatetree"
class cgrapnode
~cgrapnode() {}
intvalue;
double weigth;
cgrapnode *next;
};class cweightsort ;
class cgrap
~cgrap() {}
intvalue;
cgrapnode *next;
bool state;
cweightsort *smallweigth;
};class cqueue
void add(cweightsort *nq)
q = q->next;
}if (q->next == null)
}cweightsort * del(cweightsort *nq)
bool empty()
cweightsort *que;
};cgrap* createtree(char* filename)
cgrapnode *nt;
cgrapnode *nqt;
while (!readfile.eof()) //按空格讀取,遇到空白符結束
return grap;
}void insertqueue(cqueue &myq, int i, cgrap *grap)
//佇列中不存在
if (grap[p->value].smallweigth == null)
//佇列中已存在
else
if(p->weigthvalue].smallweigth->weight)
p=p->next;
}}double prim(cgrap *grap)
//cout << number <
}int main()
最小生成樹prim演算法實現
今天從志權師兄那裡學會了最小生成樹。所謂生成樹,就是n個點之間連成n 1條邊的圖形。而最小生成樹,就是權值 兩點間直線的值 之和的最小值。首先,要用二維陣列記錄點和權值。如上圖所示無向圖 int map 7 7 map 1 2 map 2 1 4 map 1 3 map 3 1 2 然後再求最小生成...
最小生成樹prim演算法實現
最小生成樹prim演算法實現 首先,要用二維陣列記錄點和權值。如上圖所示無向圖 int map 7 7 map 1 2 map 2 1 4 map 1 3 map 3 1 2 然後再求最小生成樹。具體方法是 1.先選取乙個點作起始點,然後選擇它鄰近的權值最小的點 如果有多個與其相連的相同最小權值的點...
最小生成樹的prim演算法實現
mst minimum spanning tree,最小生成樹 問題有兩種通用的解法,prim演算法就是其中之一,它是從 點的方面 考慮構建一顆mst,大致思想是 設圖g頂點集合為u,首先任意選擇圖g中的一點作為起始點a,將該點加入集合v,再從集合u v中找到另一點b使得點b到v中任意一點的權值最小...