国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

kruskal算法

2019-11-11 03:08:00
字體:
來源:轉載
供稿:網友
/*kruskal算法思想:每次選擇圖中最小邊權的邊,如果邊兩端的頂點在不同的連通塊中,就把這條邊加入最小生成樹中。kruskal偽代碼如下:int kruskal(){	令最小生成樹的邊權之和為ans、最小生成樹的當前邊數Num_Edge;	將所有邊按邊權從小到大排序;	for(從小到大枚舉所有邊)	{		if(當前測試邊的兩個端點在不同的連通塊中)		{			將該測試邊加入最小生成樹中;			ans+=測試邊的邊權;			最小生成樹的當前邊數Num_Edge加1;			當邊數Num_Edge等于頂點數減1時結束循環;		}	}	return ans;}*///kruskal算法應用實現代碼#include<cstdio>#include<algorithm>using namespace std;const int MAXV = 110;const int MAXE = 10010;//邊集定義部分struct edge{	int u, v;//邊的兩個端點編號	int cost;//邊權}E[MAXE];//最多有MAXE邊bool cmp(edge a, edge b){	return a.cost < b.cost;}//并查集部分int father[MAXV];//并查集數組/*int findFather(int x)//并查集查詢函數{	int a = x;	while (x != father[x])	{		x = father[x];	}	//路徑壓縮	while (a != father[a])	{		int z = a;		a = father[a];		father[z] = x;	}	return x;}*/int findFather(int x)//遞歸版{	if (x == father[x])		return x;	else	{		int f = findFather(father[x]);		father[x] = f;		return f;	}}//kruskal部分,返回最小生成樹的邊權之和,參數n為頂點個數,m為圖的邊數int kruskal(int n, int m){	//ans為所求邊權之和,Num_Edge為當前生成樹的邊數	int ans = 0, Num_Edge = 0;	for (int i = 0; i < n; i++)//頂點范圍是[0,n-1]	{		father[i] = i;//并查集初始化	}	sort(E, E + m, cmp);//所有邊按邊權從小到大排序	for (int i = 0; i < m; i++)//枚舉所有邊	{		int faU = findFather(E[i].u);//查詢測試邊兩個端點所在集合的根結點		int faV = findFather(E[i].v);		if (faU != faV)//如果不在一個集合中		{			father[faU] = faV;//合并集合(即把測試邊加入最小生成樹中)			ans += E[i].cost;//邊權之和增加測試邊的邊權			Num_Edge++;//當前生成樹的邊數加1			if (Num_Edge == n - 1)break;//邊數等于頂點數減1時結束算法		}	}	if (Num_Edge != n - 1)return -1;//無法連通時返回-1	else return ans;//返回最小生成樹的邊權之和}int main(){	int n, m;	scanf("%d%d", &n, &m);//頂點數,邊數	for (int i = 0; i < m; i++)	{		scanf("%d%d%d", &E[i].u, &E[i].v, &E[i].cost);//兩個端點的編號、邊權	}	int ans = kruskal(n, m);//kruskal算法入口	PRintf("%d/n", ans);	return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临清市| 晋中市| 荆州市| 灌阳县| 南丰县| 龙川县| 合川市| 霍城县| 勐海县| 连城县| 阿鲁科尔沁旗| 阿拉善左旗| 融水| 青田县| 遂昌县| 静乐县| 根河市| 勐海县| 平湖市| 察雅县| 资兴市| 荆门市| 平山县| 潜山县| 江陵县| 五莲县| 牡丹江市| 梅州市| 花莲县| 侯马市| 崇信县| 甘泉县| 巴南区| 陆丰市| 新竹县| 辰溪县| 眉山市| 望谟县| 安宁市| 瑞昌市| 黄梅县|