题意:

第一行n m代表n个点m条无向边。

接下来m行每行abc,代表ab之间有一条长度为c的无向边。

求:

最小生成树的边权和  次小生成树的边权和

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#define INF 0x3f3f3f3f
using namespace std;
int pho[][],n,total,dis[],from[],dp[][];
bool vis[];
void prim(int pos){
vis[pos]=;
for(int i=;i<=n;i++){
if(dis[i]>pho[pos][i]){
dis[i]=pho[pos][i];
from[i]=pos;
}
}
int mmin=INF,next=-;
for(int i=;i<=n;i++){
if(vis[i]==&&mmin>dis[i]){
mmin=dis[i];
next=i;
}
}
if(next>){
for(int i=;i<=n;i++){
if(vis[i]){
dp[i][next]=max(dp[i][from[next]],mmin);
}
}
pho[from[next]][next]=INF;
pho[next][from[next]]=INF;
total+=mmin;
prim(next);
}
}
int main()
{
int m;
scanf("%d%d",&n,&m);
memset(pho,0x3f,sizeof(pho));
memset(dis,0x3f,sizeof(dis));
for(int i=;i<m;i++){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
pho[a][b]=c;pho[b][a]=c;
}
prim();
printf("Cost: %d\n",total);
bool ok=;
int tans=INF;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(pho[i][j]!=INF){
ok=;
tans=min(tans,total-max(dp[i][j],dp[j][i])+pho[i][j]);
}
}
}
if(ok==)tans=-;
printf("Cost: %d\n",tans);
}

URAL 1416 Confidentia [次小生成树]的更多相关文章

  1. URAL 1416 Confidential(次小生成树)

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1416 Zaphod Beeblebrox — President of the Impe ...

  2. URAL 1416 Confidential --最小生成树与次小生成树

    题意:求一幅无向图的最小生成树与最小生成树,不存在输出-1 解法:用Kruskal求最小生成树,标记用过的边.求次小生成树时,依次枚举用过的边,将其去除后再求最小生成树,得出所有情况下的最小的生成树就 ...

  3. URAL 1416 Confidential (最小生成树+次小生成树)

    Description Zaphod Beeblebrox - President of the Imperial Galactic Government. And by chance he is a ...

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

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

  5. HDU 4081Qin Shi Huang's National Road System(次小生成树)

    题目大意: 有n个城市,秦始皇要修用n-1条路把它们连起来,要求从任一点出发,都可以到达其它的任意点.秦始皇希望这所有n-1条路长度之和最短.然后徐福突然有冒出来,说是他有魔法,可以不用人力.财力就变 ...

  6. POJ1679 The Unique MST[次小生成树]

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 28673   Accepted: 10239 ...

  7. The Unique MST(次小生成树)

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22335   Accepted: 7922 Description Give ...

  8. POJ1679The Unique MST(次小生成树)

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25203   Accepted: 8995 D ...

  9. [kuangbin带你飞]专题八 生成树 - 次小生成树部分

    百度了好多自学到了次小生成树 理解后其实也很简单 求最小生成树的办法目前遇到了两种 1 prim 记录下两点之间连线中的最长段 F[i][k] 之后枚举两点 若两点之间存在没有在最小生成树中的边 那么 ...

随机推荐

  1. Dom之表单提交与默认行为

    一.button提交表单 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  2. 什么是JDK

    Java Development Kit (JDK) 是太阳微系统针对Java开发人员发布的免费软件开发工具包(SDK,Software development kit).JDK 是整个Java的核心 ...

  3. java书箱

    http://www.blogjava.net/kuuyee/archive/2013/06/03/400084.html http://www.blogjava.net/cheneyfree/

  4. Neutron LBaaS Service(2)—— Neutron Services Insertion Model

    Service Insertion Service Insertion是Neutron中实现L4/L7层服务的框架.Neutron以前只有一级插件结构用于实现各种L2层技术(如LinuxBridge, ...

  5. SPOJ #4 Transform the Expression

    Not hard to know it is simply transform from in-order to post-order.My first idea is to build a tree ...

  6. angularjs webstorm 单元测试 Package.json

    Package.json小结 生成package.json 定位到想放置package.json的目录,运行npm init,根据提示就可以生成package.json文件,其中test comman ...

  7. USB 2.0 Spec 微缩版

    4.1.1 Bus Topology 最大层数为7,第7层只能是Function不能是Hub,非根Hub最大5级. 5.3 USB Communication Flow Host Controller ...

  8. php常见判断

    当要 判断一个变量是否已经声明的时候 可以使用 isset 函数 当要 判断一个变量是否已经赋予数据且不为空 可以用 empty 函数 当要 判断 一个变量 存在且不为空 先isset 函数 再用 e ...

  9. idea系列新版注册模式

    http://idea.qinxi1992.cn/ 楼上被列入黑名单,用 http://114.215.133.70:41017/

  10. usaco 2010年3月银组题解

    usaco银组解题报告 一.石子游戏如果把‘O’当作0,‘X’当做1,则N个洞的每一种状态都可以看做是一个N位二进制数.于是,这个问题就变成了求环绕的N位格雷码.幸运的是,这个结构很容易就能够用一个简 ...