文章

4

粉丝

176

获赞

8

访问

12.0k

头像
kruskal(原理讲解)
P1312 浙江大学机试题
发布于2023年2月24日 10:33
阅读数 3.0k

//用克鲁斯卡尔算法来求最小生成树(畅通工程)

   首先,整一个结构体数组来记录两个顶点及花费,按照自定义的sort函数对结构体数组进行排序,然后利用并查集对数组一个个的进行判断两条边是否连通,若未连通,则利用并查集将其连通并且记录花费,同时统计一个增加的边的条数用来判断整个村庄最后是否能连通。

#include <bits/stdc++.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <math.h>
#include <string>
using namespace std;
//
struct node{
   int a,b,m;
};                                        
int cmp(node a,node b)
{
   return a.m<b.m;
}
int fa[102];
int find(int x){
   if(fa[x]==x) return x;
   fa[x]=find(fa[x]);
   return fa[x];
}
 
int main() {
    int N,M;
 
    while (cin>>N>>M) {
      if(N==0) return 0;
      for(int i=0;i<102;++i){
     ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发