洛谷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喜欢看公式的话绕道,这篇题解留给像我一样弱的) 进入正题 如果不会扩展欧里几德的话请先 ...
随机推荐
- 华为 S5700 交换机 批量修改端口方法
常常在配置交换机端口的时候需要将多个端口设置为相同的配置,当时各端口逐一去配置不仅慢,而且容易出错,这个时候就需要对端口进行批量设置,不仅快捷,而且避免了反复输出容易出错的情况.不同系列.不同版本交换 ...
- SQL小技巧(一)拼音首字母的模糊查询
基于Microsoft SQL Server 的标量值函数fun_GetPy,借鉴其他优秀的博主文章,此处贴出源码,以及使用方法 1.打开新建查询,贴如下代码,F5 /****** Object: U ...
- (原创)如何搭建PLC+上位机监控系统达到成本的最小化?
以西门子PLC举例; 西门子PLC有几个型号:S7-200SMART,S7-1200,S7-300,S7-400,S7-1500,价格从低到高. 1个项目中要求的IO数量:600点的DI+DO,若干个 ...
- Eclipse集成Git做团队开发:代码管理
在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...
- python基础06--文件操作
1.1 文件操作 1.只读(r,rb) rb以bytes方式读文件 只写(w,wb) 追加(a,ab) r+ 读写 w+ 写读 a+ 追加写读 以什么编码方式储存的文件,就用什么编码方式打开 ...
- Java 字符串(一)字符串初始化
一.String类概述 1.概述 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例.String 是 ...
- Java深入学习(2):并发队列
并发队列: 在并发队列中,JDK有两套实现: ConcurrentLinkedQueue:非阻塞式队列 BlockingQueue:阻塞式队列 阻塞式队列非阻塞式队列的区别: 阻塞式队列入列操作的时候 ...
- ArrayList的subList方法带来的坑
最近在项目中遇到了一个问题,由一个对象序列化的结构,在反序列化时一直提示失败,真的百思不得其解啊.在对问题排查了好久之后,才发现是这个序列化的对象中的list调用了ArrayList的sublist方 ...
- 给任意view设置圆角outline.setRoundRect()方法实现
效果图,给banner设置圆角,1没有直接修改imageView而是使用自带方法进行设置 具体方法如下 //圆角方法 @TargetApi(Build.VERSION_CODES.LOLLIPOP) ...
- MyBatis面试题整理
MyBatis面试题整理 1.什么是MyBatis? 答:MyBatis是一个可以自定义SQL.存储过程和高级映射的持久层框架. 2.讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二 ...