最小生成樹(kruskal模版 Prim模板)

2022-02-20 17:42:25 字數 904 閱讀 7694

最小生成樹,最重要的是了解思想

稠密圖用prim,稀疏圖用kruskal

k(每次找最小的邊連線,一條邊連線兩個點,所以單路就可以了)

1 #include2 #include

3 #include4 int bin[110];

5 structnode

6 q[10001];

9 10 int cmp(const void *a,const void *b)//按距離從小到大排序

11 14 int find(inta)

15 ;

21 intmain()

22 42 if(num==n-1)

43 break;

44 }

45 printf("%d\n",sum);

46 }

47 }

prim()

#include 

#include 

#define n 1000001

intmap[110][110];  

intvis[110];  

intdis[110];  

intn,m;  

voidprim()  

}  vis[pos]  = 1;   

ans += min;      

for(j = 1; j <= n; j++)    

}  printf("%d\n",ans);  

return;  

}  intmain()  

map[i][i]=0;  

}  for(i=1;i<=m;i++)  

}  prim();  

}  return0;  

}  

模版 最小生成樹Kruskal

n nn 個點,m mm 條邊的無向圖。求最小生成樹的邊權值和。貪心思想 將每一條邊的u,v w u,v,w u,v,w資訊儲存下來,然後按照權值從小到大的順序依次加邊。每次加邊的時候,判斷 u,v u,vu,v 是否屬於同一集合 用並查集維護 如果是,則不加邊 如果否,則加邊並記錄答案 例題 lu...

kruskal 最小生成樹

include include 產生隨機數組用 include 同上 include using namespace std 1 帶權邊的類myarc class myarc bool operator const myarc arc myarc myarc int beginvex,int end...

最小生成樹Kruskal

最小生成樹有兩個特點,乙個是保證了所有邊的和是最小值,另乙個是保證了所有邊中的最大值最小。struct edge bool friend operator edge a,edge b 構邊 vectoredge int id max int mini void initial void input ...