题目大意:给一张无向图,找出最小生成树和次小生成树。

题目分析:模板题。。。方法就是枚举所有的比最小生成树中两端点之间的最长边还要长的边,用它替换,再取一个最小的值便是次小生成树了。

代码如下:

# include<iostream>
# include<cstdio>
# include<cstring>
# include<cstring>
using namespace std;
# define REP(i,s,n) for(int i=s;i<n;++i)
# define CL(a,b) memset(a,b,sizeof(a))
# define CLL(a,b,n) fill(a,a+n,b) const int N=105;
const int INF=1<<30;
int n,m,dis[N],dp[N][N],G[N][N],G1[N][N],vis[N]; int prim()
{
REP(i,0,n) REP(j,i,n) G1[i][j]=G1[j][i]=INF;
CLL(dis,INF,n);
CL(vis,0);
REP(i,0,n) dis[i]=G[0][i];
dis[0]=0;
vis[0]=1;
int res=0;
REP(k,1,n){
int minn=INF,u;
REP(i,0,n) if(!vis[i]&&minn>dis[i]){
minn=dis[i];
u=i;
}
res+=dis[u];
vis[u]=1;
REP(i,0,n) if(vis[i]&&G[i][u]==dis[u]){
G1[i][u]=G1[u][i]=dis[u];
break;
}
REP(i,0,n) if(!vis[i]&&dis[i]>G[u][i])
dis[i]=G[u][i];
}
return res;
} void dfs(int rt,int u,int w)
{
if(dp[rt][u]!=-1) return ;
dp[rt][u]=w;
REP(i,0,n) if(G1[u][i]!=INF)
dfs(rt,i,max(w,G1[u][i]));
} int main()
{
int T,a,b,c;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
REP(i,0,n) REP(j,i,n) G[i][j]=G[j][i]=INF;
while(m--)
{
scanf("%d%d%d",&a,&b,&c);
--a,--b;
G[a][b]=G[b][a]=c;
}
int MST=prim();
CL(dp,-1);
REP(i,0,n) dfs(i,i,0);
int MST1=INF;
REP(i,0,n) REP(j,i+1,n){
if(G[i][j]==INF||G1[i][j]<INF||G[i][j]<dp[i][j]) continue;
MST1=min(MST1,MST-dp[i][j]+G[i][j]);
}
printf("%d %d\n",MST,MST1);
}
return 0;
}

  

UVA-10600 ACM Contest and Blackout (次小生成树)的更多相关文章

  1. UVA 10600 ACM Contest and Blackout 次小生成树

    又是求次小生成树,就是求出最小生成树,然后枚举不在最小生成树上的每条边,求出包含着条边的最小生成树,然后取一个最小的 #include <iostream> #include <al ...

  2. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题八 生成树 UVA 10600 ACM Contest and Blackout 最小生成树+次小生成树

    题意就是求最小生成树和次小生成树 #include<cstdio> #include<iostream> #include<algorithm> #include& ...

  3. uva 10600 ACM Contest And Blackout

    题意: 求最小生成树和次小生成树的总权值. 思路: 第一种做法,适用于规模较小的时候,prim算法进行的时候维护在树中两点之间路径中边的最大值,复杂度O(n^2),枚举边O(m),总复杂度O(n^2) ...

  4. UVA10600 ACM Contest and Blackout —— 次小生成树

    题目链接:https://vjudge.net/problem/UVA-10600 In order to prepare the “The First National ACM School Con ...

  5. UVA10600:ACM Contest and Blackout(次小生成树)

    ACM Contest and Blackout 题目链接:https://vjudge.net/problem/UVA-10600 Description: In order to prepare ...

  6. 【UVA 10600】 ACM Contest and Blackout(最小生成树和次小生成树)

    [题意] n个点,m条边,求最小生成树的值和次小生成树的值. InputThe Input starts with the number of test cases, T (1 < T < ...

  7. 【uva 10600】ACM Contest and Blackout(图论--次小生成树 模版题)

    题意:有T组数据,N个点,M条边,每条边有一定的花费.问最小生成树和次小生成树的权值. 解法:具体请见 关于生成树的拓展 {附[转]最小瓶颈路与次小生成树}(图论--生成树) 1 #include&l ...

  8. UVA10600 ACM Contest and Blackout

    用prim算法求最小生成树和次小生成树~ #include<cstdio> #include<algorithm> #include<cstring> using ...

  9. kuangbin带你飞 生成树专题 : 次小生成树; 最小树形图;生成树计数

    第一个部分 前4题 次小生成树 算法:首先如果生成了最小生成树,那么这些树上的所有的边都进行标记.标记为树边. 接下来进行枚举,枚举任意一条不在MST上的边,如果加入这条边,那么肯定会在这棵树上形成一 ...

随机推荐

  1. java个人所得税计算器

    class Caculate{ private String name; private double money; private double actual; /** * @param usern ...

  2. pta 天梯地图 (Dijkstra)

    本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至少存在一条可达路线. 输 ...

  3. 探究 Oracle 高水位对数据库性能影响

    在开始深入分析之前,让我们先来了解一下高水位线 HWM. 一. HWM 的基本原理 (概念) 在 Oracle 中,高水位线(High-warter mark, HWM)被用来形容数据块的使用位置,即 ...

  4. 使用wireshark分析TLS

    1.基本概念 SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层.SSL通过互相认证.使用数字签名确保完整性.使用加密确保私密 ...

  5. Mirror--使用证书配置镜像模板

    --==================================================================--该文档主要用于内部配置模板--场景:--主服务器:192.1 ...

  6. SQL Server查看库、表占用空间大小

    转自:https://blog.csdn.net/yenange/article/details/50493580 查询数据文件与日志文件占用情况,查看数据大小,查看库大小 1. 查看数据文件占用(权 ...

  7. Select触发事件

     案例1: <script type="text/JavaScript"> function gradeChange(){ var objS = document.ge ...

  8. python之轮询、长轮询、websocket

    轮询 ajax轮询 ,ajax轮询 的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息. 1.后端代码 from flask import Flask,render_templat ...

  9. Mybatis入门和简单Demo

    一.Mybatis的诞生 回顾下传统的数据库开发,JDBC和Hibernate是使用最普遍的技术,但这两种ORM框架都存在一定的局限性: JDBC:最原生的技术,简单易学,执行速度快,效率高,适合大数 ...

  10. 史上最全的MonkeyRunner自动化测试从入门到精通(1)

    原文地址https://zhuanlan.zhihu.com/p/26043620 MonkeyRunner使用 #-*- coding:utf-8 –*- from com.android.monk ...