题目链接

参考博客

希望注释足够清楚。。欢迎指出不足~

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

;
const int INF=0x3f3f3f3f;

int n,m;
int mp[maxn][maxn];
int maxlen[maxn][maxn];        //maxlen[i][j]表示
                            //生成树上,从 点i到点j的所有边中的最大边长
int dis[maxn],pre[maxn];    //dis表示的其实是边长
int vis[maxn];
int mst;

int prim()
{
    mst=;
    vis[]=;
    ; i<=n; i++)
        dis[i]=mp[][i],pre[i]=;
    ; i<n; i++)    //总共需要再加入n-1个节点
    {
        int min_dis=INF,nx,pr;
        //nx表示下一个要进入MST中的结点
        //pr表示与nx相连的已经在MST中的结点
        //min_dis表示MST与V-MST间的最短距离
        ; j<=n; j++)
            if(!vis[j]&&dis[j]<min_dis)
                nx=j,min_dis=dis[nx];
        pr=pre[nx];
        mst+=mp[nx][pr];
        maxlen[nx][pr]=maxlen[pr][nx]=mp[nx][pr];
        ; j<=n; j++) if(vis[j])    //更新从j沿MST到nx的最小边长
            maxlen[j][nx]=maxlen[nx][j]=max(maxlen[j][pr],maxlen[nx][pr]);
        vis[nx]=;
        ;j<=n;j++)
            if(!vis[j]&&mp[nx][j]<dis[j])
                dis[j]=mp[nx][j],pre[j]=nx;
    }
    ;i<n;i++)
        ;j<=n;j++)
            if(pre[i]==j||pre[j]==i)    //此时边i-j在MST中
                continue;
            else if(maxlen[i][j]==mp[i][j])//存在不止一个MST
                ;
    ; //只有一个MST
}

void init()
{
    memset(mp,INF,sizeof(mp));
    memset(maxlen,-INF,sizeof(maxlen));    //之后要不断取max进行更新
    memset(vis,,sizeof(vis));
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        init();
        scanf("%d%d",&n,&m);
        ; i<m; i++)
        {
            int u,v,w;
            scanf("%d%d%d",&u,&v,&w);
            mp[u][v]=mp[v][u]=w;
        }
        if(prim()) printf("%d\n",mst);
        else puts("Not Unique!");
    }
}

poj_1679: The Unique MST【次小生成树】的更多相关文章

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

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

  2. POJ 1679 The Unique MST (次小生成树 判断最小生成树是否唯一)

    题目链接 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. De ...

  3. POJ_1679_The Unique MST(次小生成树)

    Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definit ...

  4. POJ1679 The Unique MST —— 次小生成树

    题目链接:http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total S ...

  5. POJ-1679 The Unique MST,次小生成树模板题

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K       Description Given a connected undirec ...

  6. POJ_1679_The Unique MST(次小生成树模板)

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

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

    题目链接:http://poj.org/problem?id=1679 有t组数据,给你n个点,m条边,求是否存在相同权值的最小生成树(次小生成树的权值大小等于最小生成树). 先求出最小生成树的大小, ...

  8. poj1679The Unique MST(次小生成树模板)

    次小生成树模板,别忘了判定不存在最小生成树的情况 #include <iostream> #include <cstdio> #include <cstring> ...

  9. POJ 1679 The Unique MST (次小生成树kruskal算法)

    The Unique MST 时间限制: 10 Sec  内存限制: 128 MB提交: 25  解决: 10[提交][状态][讨论版] 题目描述 Given a connected undirect ...

  10. poj 1679 The Unique MST (次小生成树(sec_mst)【kruskal】)

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35999   Accepted: 13145 ...

随机推荐

  1. node.js 开发环境配置 和使用方式

    1.在根目录创建一个文件夹 里面 放入js 编写完成后使用 cmd  进行编译就可以了2.expree 安装    卸载: npm uninstall -g express 安装指定版本: npm i ...

  2. CentOS6.8安装python2.7以及XX-Net

    xx-net在ubuntu上运行用起来很方便,如果有一些原因必须用CentOS,麻烦就比较大了. 首先需要升级python版本,CentOS自带的2.6版本是用不了的,必须升级到2.7以上,但是不能用 ...

  3. jquery实现导航栏效果

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  4. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleExcept问题解决方案

    在部署Dynamic Web Project时,如果正确配置web.xml或者标注时,仍然出现以上异常的话,可以尝试以下内容讲解的方法: 首先,双击eclipse中的servers,位置如下图&quo ...

  5. [转] SOLID五大设计原则

    我们知道,面向对象对于设计出高扩展性.高复用性.高可维护性的软件起到很大的作用.我们常说的SOLID五大设计原则指的就是:       S = 单一职责原则 Single Responsibility ...

  6. eclispe JavaEE 配置tomcat

    http://blog.csdn.net/hongshan50/article/details/8293526 http://blog.csdn.net/longshengguoji/article/ ...

  7. react-router 踩坑记

    react-router踩坑分享 背景 辛苦历程 JavaScript动态修改 第一次尝试 第二次尝试 第三次尝试 第四次尝试 总结步骤 其他方案 原理 History 常见的3种History Br ...

  8. JavaScript学习笔记(散)——addLoadEvent函数

    先贴源码 function addLoadEvent(func) { var oldonload = window.onload; //存入当前onload事件 if(typeof window.on ...

  9. c# webbrower 代理 类 IEProxy

    using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices ...

  10. 【原创】 Docker 中 运行 ASP.NET Core 站点

    一. 建立 .NetCore 项目  a.新建项目 b.选择项目类型 c.添加控制器 d.添加视图 e.修改默认请求 f.发布 二. 准备 CentOS 环境 a.准备虚拟机 b.安装 docker ...