当前位置:   article > 正文

PTA算法题:最小生成树-kruskal_pta最小生成树-kruskal

pta最小生成树-kruskal

题目给出一个无向连通图,要求求出其最小生成树的权值。

温馨提示:本题请使用kruskal最小生成树算法。

输入格式:

第一行包含两个整数 N(1<=N<=1x106),M(1<=M<=1x106) 表示该图共有 N 个结点和 M 条无向边。

接下来 M 行每行包含三个整数 Xi​,Yi​,Zi​ ,表示有一条长度为 Zi​ 的无向边连接结点 Xi​,Yi​ 。

输出格式:

输出一个整数表示最小生成树的各边的长度之和。

输入样例:

  1. 4 5
  2. 1 2 2
  3. 1 3 2
  4. 1 4 3
  5. 2 3 4
  6. 3 4 3

输出样例:

7

 

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define maxx 1000010//这里需要7位数
  4. //定一结构体数组来存每组数据
  5. struct Node{
  6. int from;
  7. int to;
  8. int val;
  9. }node[maxx];
  10. int father[maxx];
  11. bool sort_val(Node a,Node b){
  12. return a.val < b.val;
  13. }
  14. //查询元素的根节点
  15. int find( int a ){
  16. int r=a;
  17. while(father[r]!=r)
  18. r=father[r]; //找到他的前导结点
  19. int i=a,j;
  20. while(i!=r){ //路径压缩算法
  21. j=father[i]; //记录x的前导结点
  22. father[i]=r; //将i的前导结点设置为r根节点
  23. i=j;
  24. }
  25. return r;
  26. }
  27. //合并根节点不同的联通分量
  28. void merg(int a,int b){
  29. // int a = find(x);//查询x的根节点
  30. // int b = find(y);//查询y的根节点
  31. // if(a != b){
  32. father[a] = b;
  33. // }
  34. }
  35. int main(){
  36. int n,m;
  37. int sum = 0;
  38. //cin >> n >> m;
  39. scanf("%d%d",&n,&m);
  40. //初始化father数组 将其每个顶点的根节点设置为自己的节点号
  41. for(int i = 1; i <= n; i++){
  42. father[i] = i;
  43. }
  44. for(int i = 0; i < m; i++){
  45. //cin >> node[i].from >> node[i].to >> node[i].val;
  46. scanf("%d%d%d",&node[i].from,&node[i].to,&node[i].val);
  47. }
  48. sort(node,node+m,sort_val);
  49. // for(int i = 0; i < m; i++){
  50. // cout << node[i].val << endl;
  51. // }
  52. int count = 0;
  53. for(int i = 0; i < m; i++){
  54. if(count == n - 1){//n个顶点需要 n - 1边
  55. break;
  56. }
  57. int a = find(node[i].from);
  58. int b = find(node[i].to);
  59. if(a != b){
  60. father[a] = b;
  61. sum += node[i].val;
  62. count++;
  63. }
  64. }
  65. printf("%d",sum);
  66. // cout << sum;
  67. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/891158
推荐阅读
相关标签
  

闽ICP备14008679号