UVaLive/LA 6807 Túnel de Rata(最大生成树)
![]() |
6807 - Túnel de Rata |
题目大意:
去除图中的所有回路,且去除的边权和最小。
解题思路:
因为要使去掉的边最小,剩下的图有不能又任何回路,可以想到生成树的模型,生成树上在加边,就会构成回路。所以尽可能使得生成树上的边权最大,那么去掉的边权和就最小。用Kruskal算法可以很方便地实现。
参考代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;const int MAXN = 10010;
const int MAXM = 100010;
struct Path {int u, v, w;bool operator < (const Path &b) {return w > b.w;}
} path[MAXM];int father[MAXN], rank_set[MAXN], s, l, sum, nCase, cCase;
bool used[MAXM];int find_set(int x) {return father[x] == x ? x : father[x] = find_set(father[x]);
}void union_set(int x, int y) {int a = find_set(x), b = find_set(y);if (a == b) return;if (rank_set[a] < rank_set[b]) {father[a] = b;} else {father[b] = a;if (rank_set[a] == rank_set[b]) {rank_set[a]++;}}
}void input() {scanf("%d%d", &s, &l);sum = 0;for (int i = 0; i < l; i++) {scanf("%d%d%d", &path[i].u, &path[i].v, &path[i].w);sum += path[i].w;}
}void init() {for (int i = 1; i <= s; i++) {father[i] = i;rank_set[i] = 1;}memset(used, false, sizeof(used));
}void solve() {sort(path, path+l);int ans = 0;for (int i = 0; i < l; i++) {if (find_set(path[i].u) != find_set(path[i].v)) {union_set(path[i].u, path[i].v);ans += path[i].w;used[i] = true;}}int ans1 = sum - ans;for (int i = 0; i < l; i++) {if (!used[i]) {printf("Case #%d: %d %d\n", ++cCase, ans1, path[i].w);break;}}
}int main() {scanf("%d", &nCase);while (nCase--) {input();init();solve();}return 0;
}
UVaLive/LA 6807 Túnel de Rata(最大生成树)相关推荐
- UVALive 6807 Túnel de Rata (最大生成树)
大体题意: 一个老鼠从A点出发,经过一个环回到起点,他可能走到任意地点, 让你在一些边上放摄像头,使得无论老鼠怎么走,总有一个摄像头能看到老鼠! 摄像头的成本是这条边的权值! 思路: 既然他可以走到任 ...
- UVAlive6807 Túnel de Rata (最小生成树)
题意 题目链接 Sol 神仙题Orz 我们考虑选的边的补集,可以很惊奇的发现,这个补集中的边恰好是原图中的一颗生成树: 并且答案就是所有边权的和减去这个边集中的边的权值: 于是我们只需要求最大生成树就 ...
- qui ajax,Ajax Fils de T Lamon
摘要: Ce contenu est une compilation d'articles de l'encyclopédie libre Wikipedia. Dans la mythologie ...
- oracle imp exclound,Ce este o bază de date cloud | Oracle România
Bază de date în cloud Există două modele principale de implementare a bazelor de date în cloud. Trad ...
- oracle buys,Aconex - Logiciel de contrôle des projets de construction | Oracle France
Aucun résultat trouvé Votre recherche n'a donné aucun résultat. Nous vous suggérons d'essayer ce qui ...
- Guía de Inversión Minera en Argentina阿根廷矿业投资指引
I. Introducción. 引言 Argentina tiene un potencial único para el desarrollo de la minería moderna y su ...
- Verre est encore employ茅e pour les marques de haute qualit茅
Maillot de football t茅l茅chargement de polices , de la conception de lunettes de soleil lunettes de s ...
- 资源推荐 | TensorFlow电子书《FIRST CONTACT WITH TENSORFLOW》
资源推荐 | TensorFlow电子书<FIRST CONTACT WITH TENSORFLOW> 2016-06-29 系统科学社 本书由 UPC Barcelona Tech大学教 ...
- Matlab中pickic_法语「野餐」怎么写?不是picnic哦
沪江法语君按:用正确的单词约小伙伴去野餐吧. 法语中野餐究竟怎么写,Pique nique,Pique-nique,还是Picnic或者Pic nic? 在口语中,这个问题肯定没什么难的.它们的发音都 ...
最新文章
- 微信电视来了 微信遥控传屏弹幕统统有
- clisp语言中的包
- python 字符串前面加 f
- 敏捷和DevOps词汇表
- setfacl 权限导出_linux学习-setfacl设置特定目录用户权限
- Swift之深入解析如何自定义操作符
- 快递鸟电子面单打印功能基于java
- Javascrip—前端本地存储讲解(16)
- SAP Commerce(原Hybris)的一些架构图,持续更新
- c++中.dll与.lib文件的生成与使用的详解
- 驻定相位原理(POSP)的简单应用
- C++11命名空间的using说明
- 基于CUDA的粒子系统的实现
- Oracle数据库学习(四)
- C#简介和异常类总结
- 解决Exchange用户邮箱别名为乱码的问题
- GsonFormat的使用
- 删除进程 linux,linux批量删除进程
- Word 内容被锁定的两种解决方法
- 有关计算机和音乐论文,计算机音乐
热门文章
- Unite Beijing 2015大型活动
- 基于java+swing的电影票订票管理系统(java+swing+MySQL)
- matlab实现LZW压缩
- 爱甲专线分享甲状腺随访大数据多中心平台建设经验,与会专家广泛关注
- 程序员的聊天养成手册
- 使用RXJS实现高级缓存
- 走出新手村,软件测试银行项目怎么测试 + 面试题(答案)我直接起飞了......
- Visual Studio 调试器中的转储文件
- LeetCode 2226. 每个小孩最多能分到多少糖果
- 人体动作识别、预测常用骨架数据集小结