Bzoj 1083: [SCOI2005]繁忙的都市 (最小生成树)
Bzoj 1083: [SCOI2005]繁忙的都市
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1083
此题是最小瓶颈生成树的裸题.
最小瓶颈生成树:由最小的边权的\(n-1\)条边连接起\(n\)个点.
显然这就是\(Kruskal\)算法.继而得知其实就是求最小生成树,用\(prim\)也可以求.
然后这道题就成了最小生成树入门题??
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#define max(a,b) a > b ? a : b
const int maxN = 300 + 7;
const int maxM = 5e4 + 7;
using namespace std;
struct Node {
int u,v,w;
}Map[maxM];
int num ;
int f[maxN];
bool cmp(Node a,Node b) {
return a.w < b.w;
}
void add_Node(int u,int v,int w) {
Map[++ num].u = u;
Map[num].v = v;
Map[num].w = w;
return;
}
int find(int x) {
return f[x] == x ? x : f[x] = find(f[x]);
}
void unit(int u,int v) {
int fx = find(u),fy = find(v);
if(rand() % 2) f[fx] = fy;
else f[fy] = fx;
return;
}
inline int read() {
int x = 0,f = 1;char c = getchar();
while(c < '0' || c > '9') {if(c == '-')f = -1;c = getchar();}
while(c >= '0' && c <= '9') {x = x * 10 + c - '0';c = getchar();}
return x * f;
}
int main() {
int n,m;
n = read();m = read();
for(int i = 1;i <= n;++ i)
f[i] = i;
for(int i = 1,u,v,w;i <= m;++ i) {
u = read();v = read();w = read();
add_Node(u,v,w);
}
sort(Map + 1,Map + m + 1,cmp);
int sum = 0,k = 0;
for(int i = 1;i <= m;++ i) {
if(k == n - 1) break;
int fx = find(Map[i].u),fy = find(Map[i].v);
if(fx != fy) {
k ++;
sum = max(Map[i].w,sum);
unit(Map[i].u,Map[i].v);
}
}
printf("%d %d",n - 1,sum);
return 0;
}
Bzoj 1083: [SCOI2005]繁忙的都市 (最小生成树)的更多相关文章
- bzoj 1083: [SCOI2005]繁忙的都市 (最小生成树)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1083 思路:连接所有点,肯定最少是需要n-1条边的,也就是写个最小生成树,记得保存下最大的权 ...
- BZOJ 1083: [SCOI2005]繁忙的都市【Kruscal最小生成树裸题】
1083: [SCOI2005]繁忙的都市 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2925 Solved: 1927[Submit][Sta ...
- BZOJ 1083: [SCOI2005]繁忙的都市 kruskal
1083: [SCOI2005]繁忙的都市 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1083 Description 城市C是一个非 ...
- BZOJ 1083: [SCOI2005]繁忙的都市(MST)
裸的最小生成树..直接跑就行了 ---------------------------------------------------------------------- #include<c ...
- BZOJ 1083 [SCOI2005]繁忙的都市
1083: [SCOI2005]繁忙的都市 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1664 Solved: 1080[Submit][Sta ...
- BZOJ 1083 [SCOI2005]繁忙的都市 (最小生成树裸题无重边) 超简单写法!!
Description 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口 ...
- BZOJ 1083: [SCOI2005]繁忙的都市 裸的最小生成树
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1083 代码: #include<iostream> #include< ...
- BZOJ(5) 1083: [SCOI2005]繁忙的都市
1083: [SCOI2005]繁忙的都市 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4105 Solved: 2595[Submit][Sta ...
- 1083: [SCOI2005]繁忙的都市
1083: [SCOI2005]繁忙的都市 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1319 Solved: 878[Submit][Stat ...
随机推荐
- 【UVA - 156 】Ananagrams (set,map,vector)
Ananagrams Descriptions: Most crossword puzzle fans are used to anagrams--groups of words with the ...
- PHP实现用户登录注册功能
初学php做了一些比较常见且有用的页面,放在上面记录一下咯 我是用了bootstrap框架里面的模态框做注册登陆页面,这样页面比较美观 页面效果: 注册成功条件/功能: 1)用户名不能冲突 2)两次密 ...
- [51Nod1952] 栈
Description 不支持后端删除的dequeue,每次操作后查询最大值. \(n\leq10^7\).时限1.5s,不用考虑读入/输出复杂度. Solution 首先考虑如果没有后端删除怎么做, ...
- 牛客寒假6-G.区间或和
链接:https://ac.nowcoder.com/acm/contest/332/G 题意: 求a|(a+1)|(a+2)|...|(b-1)|b. 思路: 求a-b的差的每一个二进制位 自己也看 ...
- [HDU1595] find the longest of the shortest
题目链接: 点我 题意: 给定一个\(n\)个点,\(m\)条边的带权无向图,起点为\(1\),终点为\(n\),现在可以删去其中的一条边,求一种删边方案使得剩下图的最短路值最大,输出这个最短路的长度 ...
- Codeforces Round #396 (Div. 2) A
While Mahmoud and Ehab were practicing for IOI, they found a problem which name was Longest common s ...
- vs2013缺少Mvc 怎么办?
命名空间System.Web中不存在类型或命名空间名称Mvc是否缺少程序集引用? 以前vs2010或2012以前的引用一下就有了,为何现在vs2013没有,该这么处理呢?? 解决方案: 打开PCM: ...
- Spring的ioc(DI)复习概念和原理简介
IOC的好处 ioc或者说di的概念很显然了,反转控制和依赖注入,那本来直接new就行的东西,为什么要搞这么复杂呢?? 开发维护方便,高层设计不用依赖底层的,不然底层一个类改下构造器,高层就全要改,因 ...
- IIS网站设置禁止IP访问设置方法
本文设置系统为Windows2003.IIS版本是6.0. 打开IIS管理器,在iis管理器左侧单击打开网站下面的相应需要设置的网站,并在此网站上右键,选择属性,即可打开该网站属性进行相关设置. (i ...
- hdu4419Colourful Rectangle
链接 分别求出7种颜色覆盖的面积. 做法:每种颜色设定一个标号,以二进制表示R:100 G:010 B:001 .这样很明显可以知道RG:110 GB:011 以此类推. 求解时,需要开一个二维标记数 ...