<九度 OJ>题目1545:奇怪的连通图
- 题目描写叙述:
-
已知一个无向带权图,求最小整数k。使仅使用权值小于等于k的边,节点1能够与节点n连通。
- 输入:
-
输入包括多组測试用例。每组測试用例的开头为一个整数n(1 <= n <= 10000)。m(1 <= m <= 100000)。代表该带权图的顶点个数,和边的个数。
接下去m行,描写叙述图上边的信息。包含三个整数,a(1 <= a <= n),b(1 <= b <= n),c(1 <= c <= 1000000),表示连接顶点a和顶点b的无向边。其权值为c。
- 输出:
-
输出为一个整数k,若找不到一个整数满足条件。则输出-1。
- 例子输入:
-
3 3
1 3 5
1 2 3
2 3 2
3 2
1 2 3
2 3 5
3 1
1 2 3
- 例子输出:
-
3
5
-1
分析:
并查集+最小生成树:运用并查集依据题目数据联立顶点,然后对边排序,贪心的从最小边開始找,再查看题目要求的1节点和n节点是否连接就可以
#include <cstdio>
#include <ctype.h>
#include <cstdlib>
#include "queue"
#include "vector"
#include "string"
#include "algorithm"
#include <iostream>
#include "stack"
#include <cmath>
#include <set> using namespace std; class Edge
{
public:
Edge()
{
dst = 0;
}
int avex;
int bvex;
int dst;
bool operator <(const Edge &mode) const
{
return dst<mode.dst;
}
}; Edge edge[111000]; class UFSet
{
public:
UFSet(int nsize)
{
parent = new int[nsize + 1];
}
~UFSet()
{
delete[] parent;
parent = NULL;
} // 初始化每一个顶点的祖先为自身
void makeSet(int n); // 找到元素x的祖先元素
int findSet(int x); void makeMST(int m, int n);
private:
int *parent;//存放祖先节点,比如x=parent[i],元素i的祖先节点为元素x }; void UFSet::makeSet(int n) //初始化
{
for (size_t i = 1; i <= n; i++)
parent[i] = i;
} int UFSet::findSet(int x)
{ if (parent[x] == x)
return x; parent[x] = findSet(parent[x]);
return parent[x];
} void UFSet::makeMST(int m, int n)
{
sort(edge + 1, edge + m + 1);//必须先对边排序(依据边的修建费用),这样才干贪心的形成最小花费 for (int i = 1; i <= m; i++)
{
int baseA = findSet(edge[i].avex);//找到集合中的最高祖先
int baseB = findSet(edge[i].bvex); if (baseA != baseB)//两个顶点仅仅要不在一个集合就能够採用这条边。并合并两个集合
parent[baseA] = baseB;//合并两个最高祖先 if (findSet(n) == findSet(1))
{
cout << edge[i].dst << endl;
return;
}
}
cout << "-1" << endl;
}
int main()
{
int n = 0, m = 0;
while (cin >> n >> m)
{
UFSet uset(n);
uset.makeSet(n);//初始化每一个城市的祖先为自身
for (int i = 1; i <= m; i++)
scanf("%d%d%d", &edge[i].avex, &edge[i].bvex, &edge[i].dst);
uset.makeMST(m, n);
}
return 0;
}
/**************************************************************
Problem: 1545
User: EbowTang
Language: C++
Result: Accepted
Time:650 ms
Memory:2820 kb
****************************************************************/
注:本博文为EbowTang原创,兴许可能继续更新本文。假设转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50536944
原作者博客:http://blog.csdn.net/ebowtang
<九度 OJ>题目1545:奇怪的连通图的更多相关文章
- 【九度OJ】题目1026:又一版 A+B 解题报告
[九度OJ]题目1026:又一版 A+B 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1026 题目描述: 输入两个不超过 ...
- 【九度OJ】题目1124:Digital Roots 解题报告
[九度OJ]题目1124:Digital Roots 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1124 题目描述: T ...
- 【九度OJ】题目1074:对称平方数 解题报告
[九度OJ]题目1074:对称平方数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1074 题目描述: 打印所有不超过n( ...
- 【九度OJ】题目1064:反序数 解题报告
[九度OJ]题目1064:反序数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1064 题目描述: 设N是一个四位数,它的 ...
- 【九度OJ】题目1083:特殊乘法 解题报告
[九度OJ]题目1083:特殊乘法 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1083 题目描述: 写个算法,对2个小于 ...
- 【九度OJ】题目1183:守形数 解题报告
[九度OJ]题目1183:守形数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1183 题目描述: 守形数是这样一种整数, ...
- 【九度OJ】题目1015:还是A+B 解题报告
[九度OJ]题目1015:还是A+B 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1015 题目描述: 读入两个小于10000的正整 ...
- 【九度OJ】题目1201:二叉排序树 解题报告
[九度OJ]题目1201:二叉排序树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1201 题目描述: 输入一系列整数,建立二叉排序 ...
- 【九度OJ】题目1176:树查找 解题报告
[九度OJ]题目1176:树查找 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1176 题目描述: 有一棵树,输出某一深度的所有节点 ...
随机推荐
- iText操作pdf(生成,导入图片等)
生成pdf有很多种方法,用pdfbox也很方便,今天我要写的是用iText 主要在pom.xml中配置的jar包如下 <dependency> <groupId>com.low ...
- SQL SERVER-约束
NOT NULL - 指示某列不能存储 NULL 值. UNIQUE - 保证某列的每行必须有唯一的值. PRIMARY KEY - NOT NULL 和 UNIQUE 的结合.确保某列(或两个列多个 ...
- MyBATIS插件原理第一篇——技术基础(反射和JDK动态代理)(转)
在介绍MyBATIS插件原理前我们需要先学习一下一些基础的知识,否则我们是很难理解MyBATIS的运行原理和插件原理的. MyBATIS最主要的是反射和动态代理技术,让我们首先先熟悉它们. 1:Jav ...
- explicit的用法
http://blog.csdn.net/chollima/article/details/3486230
- POJ 3904
第一道莫比乌斯反演的题. 建议参看http://www.isnowfy.com/mobius-inversion/ 摘其中部分 证明的话感觉写起来会比较诡异,大家意会吧说一下这个经典题目:令R(M,N ...
- inputstream输出为String
import java.io.IOException; import java.io.InputStream; import org.apache.http.HttpEntity; import or ...
- [雅礼NOIP2018集训 day3]
考试的时候刚了T1两个小时线段树写了三个子任务结果发现看错了题目,于是接下来一个半小时我自闭了 result=历史新低 这告诉我们,打暴力要端正态度,尤其是在发现自己之前出锅的情况下要保持心态的平和, ...
- sql server 数据库distinct的用法
Distinct:用来过滤重复记录.往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值.其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直 ...
- 新版Eclipse找不到Java EE Module Dependencies选项
在 Eclipse Galileo (3.5) 版本或Ganymede (3.4) 等更老的版本中, 你可以使用Java EE Module Dependencies 选项来组织你的项目结构,确保依赖 ...
- TLCL
参考阅读:http://billie66.github.io/TLCL/book/chap04.html 绝对路径 An absolute pathname begins with the root ...