题目大意:

  给n个节点,m条边,问最小生成树,次小生成树?

  ps:以前做次小生成树的时候估计没有掌握牢固,这次wa的好辛苦哟。

 1 #include <cmath>
 2 #include <queue>
 3 #include <string>
 4 #include <cstdio>
 5 #include <cstring>
 6 #include <iostream>
 7 #include <algorithm>
 8 using namespace std;
 9
10 const int maxn = 100;
11 const int INF = 0x3f3f3f3f;
12 const double Exp = 1e-10;
13
14 int cost[maxn+10][maxn+10], lowc[maxn+10], vis[maxn+10];
15 int Max[maxn+10][maxn+10], used[maxn+10][maxn+10], pre[maxn+10];
16 int n;
17 void init ()
18 {
19     for (int i=1; i<=n; i++)
20         for (int j=1; j<=n; j++)
21             if (i == j)
22                 cost[i][j] = 0;
23             else
24                 cost[i][j] = INF;
25 }
26 int prim ()
27 {
28     int i, j, sum = 0;
29     memset (Max, 0, sizeof(Max));
30     memset (used, 0, sizeof(used));
31     memset (vis, 0, sizeof(vis));
32     vis[1] = 1;
33     for (i=1; i<=n; i++)
34     {
35         lowc[i] = cost[1][i];
36         pre[i] = 1;
37     }
38     for (i=1; i<n; i++)
39     {
40         int p, mini = INF;
41         for (j=1; j<=n; j++)
42             if (!vis[j] && mini > lowc[j])
43             {
44                 p = j;
45                 mini = lowc[j];
46             }
47         vis[p] = 1;
48         sum += mini;
49         used[pre[p]][p] = used[p][pre[p]] = 1;
50         for (j=1; j<=n; j++)
51         {//这一点的错误wa的好苦
52             if (vis[j] && j != p)//p!=j一定要有,否则Max[i][i]的距离就可能会不等于零,影响后面的计算过程
53                 Max[j][p] = Max[p][j] = max(Max[j][pre[p]], lowc[p]);
54             if (!vis[j] && lowc[j] > cost[p][j])
55             {
56                 lowc[j] = cost[p][j];
57                 pre[j] = p;
58             }
59         }
60     }
61     return sum;
62 }
63 int smst (int sum)
64 {
65     int i, j, mini = INF;
66     for (i=1; i<=n; i++)
67         for (j=i+1; j<=n; j++)
68             if (cost[i][j] != INF && !used[i][j])
69                 mini = min (mini, sum + cost[i][j] - Max[i][j]);
70     return mini;
71 }
72 int main ()
73 {
74     int t, m;
75     scanf ("%d", &t);
76     while (t --)
77     {
78         scanf ("%d %d", &n, &m);
79         init ();
80         while (m --)
81         {
82             int a, b, c;
83             scanf ("%d %d %d", &a, &b, &c);
84             cost[a][b] = cost[b][a] = c;
85         }
86         int num1, num2;
87         num1 = prim ();
88         num2 = smst (num1);
89         printf ("%d %d\n", num1, num2);
90     }
91     return 0;
92 }

转载于:https://www.cnblogs.com/alihenaixiao/p/4549538.html

UVA 10600 ACM Contest and Blackout (次小生成树)相关推荐

  1. UVA 10600 Masud Rana

    点击打开链接 Problem A ACM CONTEST AND BLACKOUT In order to prepare the "The First National ACM Schoo ...

  2. [2012山东ACM省赛] The Best Seat in ACM Contest (模拟)

    The Best Seat in ACM Contest Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Cainiao is a ...

  3. https://www.nowcoder.com/acm/contest/107/F

    链接: https://www.nowcoder.com/acm/contest/107/F 来源:牛客网 在学习Operating System的过程中,Glory遇到了这样一个问题,现在有一个大小 ...

  4. https://ac.nowcoder.com/acm/contest/317/D

    链接:https://ac.nowcoder.com/acm/contest/317/C 来源:牛客网 小a与星际探索 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其 ...

  5. 2022/7/17/题解2022河南萌新联赛第(二)场:河南理工大学https://ac.nowcoder.com/acm/contest/37344

    A题:https://ac.nowcoder.com/acm/contest/37344/A 看代码比说结论要快得多 #include<bits/stdc++.h> using names ...

  6. 牛客-https://www.nowcoder.com/acm/contest/96/H

    链接:https://www.nowcoder.com/acm/contest/96/H 来源:牛客网 题目描述 今天qwb要参加一个数学考试,这套试卷一共有n道题,每道题qwb能获得的分数为ai,q ...

  7. ACM题目————次小生成树

    Description 最小生成树大家都已经很了解,次小生成树就是图中构成的树的权值和第二小的树,此值也可能等于最小生成树的权值和,你的任务就是设计一个算法计算图的最小生成树. Input 存在多组数 ...

  8. UVA 1494 - Qin Shi Huang's National Road System(次小生成树)

    题目链接:点击打开链接 题意:n个城市,需要修建一些道路使得任意两个城市联通,还可以修一条魔法道路, 不花钱, 设魔法路连接的城市的人口之和为A, 所有道路总长为B, 求A/B的最大值. 思路: 次小 ...

  9. 模板 - LCA最近公共祖先(倍增法、Tarjan、树上差分、LCA优化的次小生成树)

    整理的算法模板合集: ACM模板 注意x和y的LCA可以是x或者y本身 一.LCA的在线倍增算法 /*给定一棵包含 n个节点的有根无向树,有 m个询问,每个询问 给出了一对节点的编号 x和 y,询问 ...

最新文章

  1. linux平台调试终端,10款Linux平台上优秀的调试器,总有一款适合你!
  2. 深度解析机器学习中的置信区间(附代码)
  3. supervisor配置环境变量(PATH)
  4. Java并发编程实战————Executor框架与任务执行
  5. [机器学习]正则化项L1和L2的学习与理解
  6. man 输出的帮助信息输出到文件中
  7. PyTorch 学习笔记(一):让PyTorch读取你的数据集
  8. mongodb在ubuntu下无法打开的问题
  9. 水利水电专业英语(2.5k行超全)
  10. navicat 10.1.7 注册码
  11. 通常所说的微型计算机的主机主要包括(),微型计算机的主机主要包括
  12. c++_十进制数-10的三进制4位补码是多少?
  13. springboot集成kettle, 访问不到ktr文件
  14. BSP板机支持包、linux启动分析、ARM裸机编程
  15. TCP/IP协议分析实验
  16. @Transactional注解怎么使用?
  17. 如何做一个小程序商城,需要多少钱
  18. GitChat·技术管理 | Cynefin 框架和不确定性管理思维
  19. bat批处理定时重启应用程序
  20. 利用JAVA多线程模拟售票系统,对统一资源进行处理

热门文章

  1. php 编程祝新年快乐_用于测试自动化的7种编程语言
  2. 2020暨阳学院园林计算机考研考场,【图片】2020考研,老学长教你如何规划!【计算机考研吧】_百度贴吧...
  3. java三大特性 继承_java基础(二)-----java的三大特性之继承
  4. excel文件被写保护怎么解除_u盘被写保护怎么解除,看完你就知道了
  5. ibm+x3650+m4+linux+raid驱动,IBM X3650M4阵列卡驱动下载
  6. anaconda如何卸载库_小白必看!Anaconda安装全攻略
  7. echarts formatter鼠标悬停显示信息
  8. 【数据结构基础应用】【顺序表】
  9. 如何在Java中同步ArrayList?
  10. Java Compiler disable()方法与示例