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 Output
3
Not Unique! 次小生成树学习博客:http://blog.csdn.net/niushuai666/article/details/6925258 分析:T组数据,每组n个节点m条边。计算一下,最小生成树是不是独一无二的,如果是就输出最小生成树的权值和,否则输出Not Unique!(不是独一无二的)。
先计算最小生成树,在计算次小生成树,判断两者的值是否相等!输入数据保证不存在重边。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <iostream>
#include <string>
#include <algorithm>
#define N 110
#define INF 0x3f3f3f3f using namespace std;
int n, m; int map[N][N];
bool used[N][N];
int pre[N];
bool vis[N];
int dis[N];
int Max[N][N]; int prim()
{
int ans=0; int i, j;
memset(vis, false, sizeof(vis));
memset(used, false, sizeof(used));
memset(dis, 0, sizeof(dis));
memset(Max, 0, sizeof(Max)); pre[1]=-1;
vis[1]=true;
for(i=2; i<=n; i++){
dis[i]=map[1][i];
pre[i]=1;
} for(int k=0; k<n-1; k++){
int mm=INF;
int pos;
for(i=1; i<=n; i++){
if(!vis[i]&&mm>dis[i]){
mm=dis[i];
pos=i;
}
}
ans+=mm; //在这可以加一条判断 如果找出来的mm==INF 说明不存在最小生成树
vis[pos]=true; used[pos][pre[pos]]=true;
used[pre[pos]][pos]=true;//pos与pre[pos]之间的边标记使用
//update
for(j=1; j<=n; j++){
if(vis[j])
Max[j][pos]=Max[pos][j]=max(Max[j][pre[pos]], dis[pos] );
if(!vis[j]&&dis[j]>map[pos][j])
{
dis[j]=map[pos][j];
pre[j]=pos;
}
}
}
return ans;
}
int MST;
int sed_mst()//计算次小生成树
{
int sed=INF;
int i, j;
for(i=1; i<=n; i++){
for(j=i+1; j<=n; j++){
if(map[i][j]!=INF && !used[i][j])
{
sed=min(sed, MST+map[i][j]-Max[i][j]);
}
}
}
if(sed==INF) return -1;
return sed;
} int main()
{
int tg; scanf("%d", &tg);
int i, j;
while(tg--)
{
scanf("%d %d", &n, &m);
for(i=1; i<=n; i++){
for(j=1; j<=n; j++){
if(i==j) map[i][j]=0;
else map[i][j]=INF;
}
}//建图的初始化 int u, v, w;
for(i=0; i<m; i++){
scanf("%d %d %d", &u, &v, &w);
map[u][v]=map[v][u]=w;
}
MST=prim();
//printf("%d\n", MST); if(MST==sed_mst()){
printf("Not Unique!\n");
}else{
printf("%d\n", MST);
}
}
return 0;
}
kruskal算法实现:
http://www.cnblogs.com/wally/archive/2013/02/03/2890460.html
(用那个人的代码提交到poj的这道题,耗时比上面的prim号高不少~~~)
poj 1679 The Unique MST 【次小生成树+100的小数据量】的更多相关文章
- POJ 1679 The Unique MST (次小生成树)
题目链接:http://poj.org/problem?id=1679 有t组数据,给你n个点,m条边,求是否存在相同权值的最小生成树(次小生成树的权值大小等于最小生成树). 先求出最小生成树的大小, ...
- POJ 1679 The Unique MST (次小生成树 判断最小生成树是否唯一)
题目链接 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. De ...
- POJ 1679 The Unique MST (次小生成树kruskal算法)
The Unique MST 时间限制: 10 Sec 内存限制: 128 MB提交: 25 解决: 10[提交][状态][讨论版] 题目描述 Given a connected undirect ...
- poj 1679 The Unique MST (次小生成树(sec_mst)【kruskal】)
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35999 Accepted: 13145 ...
- poj 1679 The Unique MST 【次小生成树】【模板】
题目:poj 1679 The Unique MST 题意:给你一颗树,让你求最小生成树和次小生成树值是否相等. 分析:这个题目关键在于求解次小生成树. 方法是,依次枚举不在最小生成树上的边,然后加入 ...
- POJ 1679 The Unique MST 【最小生成树/次小生成树模板】
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22668 Accepted: 8038 D ...
- POJ1679 The Unique MST —— 次小生成树
题目链接:http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total S ...
- poj 1679 The Unique MST
题目连接 http://poj.org/problem?id=1679 The Unique MST Description Given a connected undirected graph, t ...
- poj 1679 The Unique MST(唯一的最小生成树)
http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
随机推荐
- ios -WKWebView 高度 准确,留有空白的解决方案
#import "ViewController.h" #import <WebKit/WebKit.h> @interface ViewController ()< ...
- 字符串匹配(KMP 算法 含代码)
主要是针对字符串的匹配算法进行解说 有关字符串的基本知识 传统的串匹配法 模式匹配的一种改进算法KMP算法 网上一比較易懂的解说 小样例 1计算next 2计算nextval 代码 有关字符串的基本知 ...
- 性能百万/s:腾讯轻量级全局流控方案详解【转自Wetest】
阿里用的方案是在nginx中配置限流(限流功能模块是自己开发的),流量统计线上是有监控打通的,具体的限流值是通过线上流量表现+线下性能测试(模拟线上场景)测试得出的. 全新的全局流控实现方案,既解决了 ...
- 【BZOJ3526】[Poi2014]Card 线段树
[BZOJ3526][Poi2014]Card Description 有n张卡片在桌上一字排开,每张卡片上有两个数,第i张卡片上,正面的数为a[i],反面的数为b[i].现在,有m个熊孩子来破坏你的 ...
- maven 打包报错
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------ ...
- Vue的插值与表达式
正常情况我们在页面取值都是通过 {{ data }}来取值,但是有时候我们就是想输出HTML,而不是将数据解析后的纯文本,这个时候可以使用v-html来绑定数据 <span v-html=&qu ...
- locust参数化
前面用篇专门讲了requests实现接口的参数关联案例,这里直接转化成locust脚本就行了 # coding:utf-8 from locust import HttpLocust, TaskSet ...
- iOS开发之计算器
本项目基于swift3.0的语法. // // ViewController.swift // 加法计算器 // // Created by 葛杨杨 on 2017/7/25. // Copyrigh ...
- 剑指offer 面试13题
面试13题: 题目:机器人的运动范围 题:地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子 ...
- python读写Excel文件--使用xlrd模块读取,xlwt模块写入
一.安装xlrd模块和xlwt模块 1. 下载xlrd模块和xlwt模块 到python官网http://pypi.python.org/pypi/xlrd下载模块.下载的文件例如:xlrd-0.9. ...