洛谷p2330繁忙的都市题解
根据题意来分析, 要求出你选了几条路, 最小生成树是能解的, 那么就直接输出n - 1条路即可, 至于最大值则走一遍最小生成树求出即可
这里提供最小生成树的两种方法
1. 克鲁斯卡尔
克鲁斯卡尔算法还是比较好理解的思路也简单, 就是排序然后按顺序来遍历, 找一个就把他放到并查集中。
#include <iostream>
#include <cstdio>
#include <algorithm>
#define MAXN 50005
using namespace std;
int n, m, tot, fa[MAXN];
struct node {
int x, y, z;
}kls[MAXN];
bool cmp (node x, node y) {
return x.z < y.z;
}
int find (int x) {
if (fa[x] == x) return x;
else return fa[x] = find (fa[x]);
}
int main () {
scanf ("%d%d", &n, &m);
for (int i = ; i <= MAXN; i++)
fa[i] = i;
for (int i = ; i <= m; i++)
scanf ("%d%d%d", &kls[i].x, &kls[i].y, &kls[i].z);
sort (kls + , kls + m + , cmp);
int ans;
for (int i = ; i <= m; i++) {
int xx = find (kls[i].x), yy = find (kls[i].y);
if (xx != yy) {
fa[xx] = yy;
tot++;
ans = kls[i].z;
if (tot == n - ) break;
}
}
printf ("%d %d\n", tot, ans);
return ;
}
2.prim算法
有点类似于迪杰斯特拉。
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 5005
using namespace std;
int n, m, dis[MAXN], map[MAXN][MAXN];
bool vis[MAXN];
void prim () {
dis[] = ;
for (int i = ; i <= n; i++) {
int k = ;
for (int j = ; j <= n; j++)
if (!vis[j] && dis[j] < dis[k])
k = j;
vis[k] = ;
for (int j = ; j <= n; j++)
if (!vis[j] && dis[j] > map[k][j])
dis[j] = map[k][j];
}
}
int main () {
memset (map, 0x7f7f7f, sizeof (map));
memset (dis, 0x7f7f7f, sizeof (dis));
scanf ("%d%d", &n, &m);
for (int i = ; i <= m; i++) {
int x, y, z;
scanf ("%d%d%d", &x, &y, &z);
if (map[x][y] > z)
map[x][y] = map[y][x] = z;
}
prim();
int big = ;
for (int i = ; i <= n; i++)
if (dis[i] > big)
big = dis[i];
printf ("%d %d\n",n - , big);
return ;
}
洛谷p2330繁忙的都市题解的更多相关文章
- 洛谷P1783 海滩防御 分析+题解代码
洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...
- 洛谷P4047 [JSOI2010]部落划分题解
洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...
- Luogu P2330 繁忙的都市
Luogu P2330 繁忙的都市 裸的最小生成树. 当然,一定要注意它让你输出什么. #include<bits/stdc++.h> #define N 100010 using nam ...
- 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)
洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...
- 洛谷—— P2330 [SCOI2005]繁忙的都市
P2330 [SCOI2005]繁忙的都市 题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路 ...
- 洛谷10月月赛II题解
[咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能 ...
- [洛谷P1823]音乐会的等待 题解(单调栈)
[洛谷P1823]音乐会的等待 Description N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没 ...
- BZOJ2527 & 洛谷3527:[Poi2011]Meteors——题解
+++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...
- 洛谷 p1516 青蛙的约会 题解
dalao们真是太强了,吊打我无名蒟蒻 我连题解都看不懂,在此篇题解中,我尽量用语言描述,不用公式推导(dalao喜欢看公式的话绕道,这篇题解留给像我一样弱的) 进入正题 如果不会扩展欧里几德的话请先 ...
随机推荐
- python字符串的拼接
方式一:使用"+"拼接(拼接字符串较多时会影响拼接效率) 方式二:使用","拼接(只能用于print打印,赋值操作会生成元组) 方式三:使用"%&qu ...
- 踏入OpenGL大门 —— VS2015开发环境配置 (详细图文)
转自: https://www.jianshu.com/p/68c314fa9fea?from=groupmessage 眼睛熊 ---------------- 本文 ------------- ...
- C#实现电信短信SMGP协议程序源码
此程序为中国电信SMGP协议程序接口,适合在中国电信申请了短信发送端口的公司使用. 短信群发已经成为现在软件系统.网络营销等必不可少的应用工具.可应用在短信验证.信息群发.游戏虚拟商品购买.事件提醒. ...
- 【JVM学习笔记一】Java内存区域
1. 运行时数据区域 1) 程序计数器 | 线程私有,存储线程运行时所执行字节码的行号,实现分支.循环.跳转.异常处理.线程恢复等基础功能 | Java方法,记录正在执行的虚拟机字节码指令的行号:Na ...
- linux memcached 的安装
linux memcached安装yum -y install libevent libevent-deve yum list memcached yum -y install memcached m ...
- element-ui 上传图片或视频时,先回显在上传
<el-upload class="upload-demo" ref="vidos" :action="URL+'/api/post/file' ...
- Redis特点分析及性能优化
一.Key >Redis key值是二进制安全的,这意味着可以可以使用任何二进制序列作为key值.空字符串也是有效的key值. >key取值原则 1.键值不需要太长,消耗内存,且在数据中查 ...
- fastjson 将json字符串转化成List<Map<String, Object>>
亲测可行,如下: JSON.parseObject(jsonstr, new TypeReference<List<Map<String, Object>>>() ...
- Mac 编译报错 symbol(s) not found for
查看静态库文件支持的arm64指令集架构的方法 root# lipo -info libname.a Architectures in the fat file: libname.a are: arm ...
- python之路第三天
2018年 7月 13 日 while循环语句: 输出1-5的数 s = 1 whlie s < 6: print(s) 用while循环输入 1 2 3 4 5 6 8 9 10 while ...