题目链接:http://poj.org/problem?id=1679

判断最小生成数是否唯一:如果唯一这权值和次小生成树不同,否则相同;

#include<stdio.h>
#include<string.h>
#include<map>
#include<iostream>
#include<algorithm>
#include<math.h>
#define N 110
#define INF 0xfffffff using namespace std; int Max[N][N], used[N][N], vis[N], maps[N][N], dist[N], fa[N], n; void Init()
{
memset(vis, , sizeof(vis));
memset(used, , sizeof(used));
memset(Max, , sizeof(Max));
memset(fa, , sizeof(fa));
for(int i=; i<=n; i++)
{
dist[i] = INF;
for(int j=; j<=n; j++)
if(i == j)
maps[i][j] = ;
else
maps[i][j] = INF;
}
} int Prim(int start)
{
int ans=;
for(int i=; i<=n; i++)
{
dist[i] = maps[start][i];
fa[i] = start;
}
vis[start] = ;
for(int i=; i<=n; i++)
{
int Min = INF, index = -;
for(int j=; j<=n; j++)
{
if(vis[j]== && Min > dist[j])
{
Min = dist[j];
index = j;
}
}
if(index == -)break;
vis[index] = ;
ans += Min;
used[fa[index]][index] = used[index][fa[index]] = ;
for(int j=; j<=n; j++)
{
if(vis[j] == && index != j)
{
Max[index][j] = Max[j][index] = max(Max[fa[index]][j], dist[index]);
}
else if(vis[j] == && dist[j] > maps[index][j])
{
dist[j] = maps[index][j];
fa[j] = index;
}
}
}
return ans;
} int SMST(int ans)
{
int Min = INF;
for(int i=; i<=n;i++)
{
for(int j=i+; j<=n; j++)
{
if(used[i][j]== && maps[i][j] != INF)
Min=min(Min, ans-Max[i][j]+maps[i][j]);
}
}
return Min;
} int main()
{
int T, m, a, b, c;
scanf("%d", &T);
while(T--)
{
scanf("%d%d", &n, &m);
Init();
for(int i=; i<m; i++)
{
scanf("%d%d%d", &a, &b, &c);
maps[a][b] = maps[b][a] = c;
}
int num1 = Prim();
int num2 = SMST(num1);
if(num1 != num2)
printf("%d\n", num1);
else
printf("Not Unique!\n");
}
return ;
}

The Unique MST----poj1679次小生成树的更多相关文章

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

    http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its minimum s ...

  2. POJ1679 The Unique MST 【次小生成树】

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

  3. POJ1679 The Unique MST【次小生成树】

    题意: 判断最小生成树是否唯一. 思路: 首先求出最小生成树,记录现在这个最小生成树上所有的边,然后通过取消其中一条边,找到这两点上其他的边形成一棵新的生成树,求其权值,通过枚举所有可能,通过这些权值 ...

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

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

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

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

  6. poj 1679 The Unique MST【次小生成树】

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

  7. POJ 1679:The Unique MST(次小生成树&amp;&amp;Kruskal)

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

  8. poj 1679 The Unique MST 【次小生成树】【模板】

    题目:poj 1679 The Unique MST 题意:给你一颗树,让你求最小生成树和次小生成树值是否相等. 分析:这个题目关键在于求解次小生成树. 方法是,依次枚举不在最小生成树上的边,然后加入 ...

  9. POJ 1679 The Unique MST (次小生成树)题解

    题意:构成MST是否唯一 思路: 问最小生成树是否唯一.我们可以先用Prim找到一棵最小生成树,然后保存好MST中任意两个点i到j的这条路径中的最大边的权值Max[i][j],如果我们能找到一条边满足 ...

  10. poj 1679 The Unique MST 【次小生成树+100的小数据量】

    题目地址:http://poj.org/problem?id=1679 2 3 3 1 2 1 2 3 2 3 1 3 4 4 1 2 2 2 3 2 3 4 2 4 1 2 Sample Outpu ...

随机推荐

  1. postgres外部表之-oracle_fdw

    1. 安装Oracle客户端工具 编译安装oracle_fdw之前,需要安装Oracle的客户端程序:步骤略 下载地址:http://www.oracle.com/technetwork/databa ...

  2. SaltStack salt-key 命令

    salt-key is used to manage Salt authentication keys [root@localhost ~]$ salt-key -L # 查看有哪些minion公钥过 ...

  3. BugHD 与你的应用一起成长

    BugHD 新增功能 1.新增安装量.启动量的统计功能 BugHD SDK 1.3.0新增安装量.启动量的统计功能,在崩溃分析页面右上角可看到安装量和启动量. BugHD 体验优化 1.Android ...

  4. C语言char*字符串数组和unsigned char[]数组的相互转换

    #include <iostream> #include <string> using namespace std; void convertUnCharToStr(char* ...

  5. smarty模板文件书写javascript代码

    在smarty文件里直接写javascript代码时候,造成500错误. javascript代码有很多的{}在同一行,而{}也是smarty引擎解析模板的关键标识符,smarty将对其进行分析,这时 ...

  6. activity的启动模式有哪些?

    Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standar ...

  7. 合格PHP工程师的知识结构

    摘自http://www.cnblogs.com/ftx5410/p/7204672.html 一下子就想了这么多,后续想到了再补,请大家多多指教.其实编程使用什么语言不重要,最重要的是思想,编程的思 ...

  8. Win8应用开发 入门篇(三) UX交互导航模式

    导航模式(Windows 应用商店应用)   在本文中 分层模式 画布上导航 顶部应用栏 语义式缩放 相关主题 组织 Windows 应用商店应用中的内容,以便用户可以轻松而直观地进行导航.使用正确的 ...

  9. 【十大算法实现之KNN】KNN算法实例(含测试数据和源码)

    KNN算法基本的思路是比较好理解的,今天根据它的特点写了一个实例,我会把所有的数据和代码都写在下面供大家参考,不足之处,请指正.谢谢! update:工程代码全部在本页面中,测试数据已丢失,建议去UC ...

  10. 邮件MIME格式分析

    http://www.cnblogs.com/crystalray/articles/3302427.html 邮件mime格式 参考: rfc4021,Registration of Mail an ...