UVA908[Re-connecting Computer Sites]题解
1.题意分析
题意就是给你很多组数,对于每组数,有三组小数据。第一组小数据先输入一个n表示顶点数,然后再输入n-1条边表示初始边数。其它组小数据先输入一个数k,表示增加的边的数量,然后再输入k条边,表示增加的边。在输入第二组小数据时,要先把边清空,重新输入,但是边的数量不变。
2.做法
题意不难理解,说白了就是最小生成树的板子题。很明显,对于每组数,可以分为两组大数据。第一组小数据是一组大数据;第二组和第三组小数据可以分为一组大数据。对于每组大数据,求出最小生成树,再把数据清空,再求一遍。就是最终的正解了
3.关于最小生成树
注意输入的换行,换行卡了我10分钟
它终于来了
代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 100;
int parents[N];
struct edge
{
int from, to, val;
}edges[N];
bool cmp(edge a, edge b)
{
if(a.val != b.val)
{
return a.val < b.val;
}else
{
return a.from > b.from;
}
return a.to > b.to;
}
int cnt = 0;
void add(int u, int v, int w)
{
cnt++;
edges[cnt].from = u;
edges[cnt].to = v;
edges[cnt].val = w;
}
int Find(int n)
{
int last_find = n;
while(true)
{
if(parents[n] == n || parents[n] == last_find)
{
return n;
}
last_find = n;
n = parents[n];
}
}
int kruskal(edge* edges, int points, int bian)
{
int w = 0;
int cur_cnt = 0;
int ans = 0;
sort(edges + 1, edges + bian + 1, cmp);
while(cur_cnt < points-1)
{
w++;
int node_1 = Find(edges[w].from);
int node_2 = Find(edges[w].to);
if(node_1 != node_2)
{
parents[Find(node_1)] = parents[Find(node_2)];
ans += edges[w].val;
cur_cnt++;
}
// cout << cur_cnt << " " << w << endl;
// cout << ans << endl;
}
return ans;
}
void init(int n)
{
cnt = 0;
for(int i = 1;i <= n;i++)
{
parents[i] = i;
}
}
int main()
{
int ccnntt=0;
int n;
while(cin >> n)
{
if(ccnntt!=0){
cout<<endl;
}
ccnntt++;
init(n);
for(int i = 1;i < n;i++)
{
int u, v, w;
cin >> u >> v >> w;
add(u, v, w);
}
cout << kruskal(edges, n, n - 1) << endl;
init(n);
int k;
cin >> k;
for(int i = 1;i <= k;i++)
{
int u, v, w;
cin >> u >> v >> w;
add(u, v, w);
}
int m;
cin >> m;
for(int i = 1;i <= m;i++)
{
int u, v, w;
cin >> u >> v >> w;
add(u, v, w);
}
cout << kruskal(edges, n, k + m) << endl;
}
return 0;
}
UVA908[Re-connecting Computer Sites]题解的更多相关文章
- HDU Computer Transformation1041 题解
Problem Description A sequence consisting of one digit, the number 1 is initially written into a com ...
- 「POJ3436」ACM Computer Factory题解
题意: 有很多台机器,可以把物件从一种状态改装成另一种状态,初始全为\(0\),最终状态全为\(1\),让你可以拼凑机器,请问最大总性能为多少,且要求输出方案. 题解: 这道题是真的水啊,我不想写太多 ...
- UVa 908 - Re-connecting Computer Sites
题目大意:有n个网站,由m条线路相连,每条线路都有一定的花费,找出连接所有线路的最小花费. 最小生成树问题(Minimal Spanning Tree, MST),使用Kruskal算法解决. #in ...
- CF 1136A 1136B 1136C 1136D 1136E(Round546ABCDE)题解
题目地址:https://codeforces.com/contest/1136 A: Nastya Is Reading a Book 题解:挨个判断即可,水题. 参考代码: #include< ...
- POJ3694:Network(并查集+缩点+lca)
Network Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 13172 Accepted: 4774 题目链接:htt ...
- HDU 2460 Network 傻逼Tarjan
Network Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- POJ3694 Network —— 边双联通分量 + 缩点 + LCA + 并查集
题目链接:https://vjudge.net/problem/POJ-3694 A network administrator manages a large network. The networ ...
- HDU4738 Caocao's Bridges —— 边双联通分量 + 重边
题目链接:https://vjudge.net/problem/HDU-4738 A network administrator manages a large network. The networ ...
- 双连通分量(点-双连通分量&边-双连通分量)
概念: 双连通分量有点双连通分量和边双连通分量两种.若一个无向图中的去掉任意一个节点(一条边)都不会改变此图的连通性,即不存在割点(桥),则称作点(边)双连通图. 一个无向图中的每一个极大点(边)双连 ...
- poj3694 缩点边双连通分量
Network Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 8669 Accepted: 3175 Descripti ...
随机推荐
- 数仓性能调优:大宽表关联MERGE性能优化
摘要:本文主要为大家讲解在数仓性能调优过程中,关于大宽表关联MERGE性能优化过程. 本文分享自华为云社区<GaussDB(DWS)性能调优:大宽表关联MERGE性能优化>,作者:譡里个檔 ...
- ChatGPT「代码解释器」正式开放,图片转视频仅需30秒!十大令人震惊的魔法揭秘
经过超过三个月的等待,ChatGPT「代码解释器」终于全面开放.这是一大波神奇魔法的高潮. OpenAI的科学家Karpathy对这个强大的代码解释器测试版赞不绝口.他把它比作你的个人数据分析师,可以 ...
- Dubbo 我手写几行代码,就把通信模式给你解释清楚!
作者:小傅哥 博客:https://bugstack.cn 原文:https://bugstack.cn/md/road-map/road-map.html 沉淀.分享.成长,让自己和他人都能有所收获 ...
- 带你掌握利用Terraform不同数据源扩展应用场景
本文分享自华为云社区<利用Terraform不同数据源扩展应用场景>,作者: kaliarch . 一 背景 在生产环境中使用Terraform进行基础设施编排,通常又一些信息是通过其他外 ...
- 最全面的JAVA多线程知识总结
背景: 2023年经营惨淡,经历了裁员就业跳槽再就业,在找工作过程中对于知识的梳理和总结,本文总结JAVA多线程. 应用场景: 需要同时执行多个任务或处理大量并发请求时, 目前常用的场景有: We ...
- mysql注释的方法
单行注释:"#", "--", 多行注释:/**/ 参考链接:https://www.cnblogs.com/JiangLe/articles/6897403. ...
- 三 APPIUM Android自动化 测试初体验(转)
1.创建一个maven项目 成功新建工程: 编辑pom.xml,在<dependencies></dependencies>下添加appium相关依赖: <depende ...
- Log4j的Maven依赖及其配置文件
Maven配置 <!--Log4j依赖文件--> <dependency> <groupId>log4j</groupId> <artifactI ...
- VMware中的虚拟机Debian10的服务器配置,使主机(win10)能够通过本地域名(如www.xxx.com)访问该服务器
VMware中的虚拟机Debian10的服务器配置,使主机(win10)能够通过本地域名(如www.xxx.com)访问该服务器 安装过程 下载debian-10.13.0-amd64-DVD-1.i ...
- 为什么NoSQL不支持事务
为什么NoSQL不支持事务 1. 背景 看书<Neo4j权威指南>的时候,发现个问题:日常的NoSQL都不支持事务(ACID). 2. 问题 事务对数据的存储过程是有利的,既然事情是有利的 ...