洛谷P2820 局域网 (最小生成树)
题目链接:https://www.luogu.org/problemnew/show/P2820
题目背景
某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象。因为连接计算机的网线本身不同,所以有一些连线不是很畅通,我们用f(i,j)表示i,j之间连接的畅通程度,f(i,j)值越小表示i,j之间连接越通畅,f(i,j)为0表示i,j之间无网线连接。
题目描述
需要解决回路问题,我们将除去一些连线,使得网络中没有回路,并且被除去网线的Σf(i,j)最大,请求出这个最大值。
输入输出格式
输入格式:
第一行两个正整数n k
接下来的k行每行三个正整数i j m表示i,j两台计算机之间有网线联通,通畅程度为m。
输出格式:
一个正整数,Σf(i,j)的最大值
输入输出样例
5 5
1 2 8
1 3 1
1 5 3
2 4 5
3 4 2
8 所有边数权值之和减去最小生成树
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
int n,k,res;
struct edge
{
int u,v,cost;
}es[];
int par[];
void init()
{
for(int i=;i<;i++) par[i]=i;
}
int Find(int x)
{
if(par[x]==x) return x;
else return Find(par[x]);
}
int cmp(edge x,edge y)
{
return x.cost<y.cost;
}
int kruscal()
{
init();
sort(es,es+k,cmp);
res=;
for(int i=;i<k;i++){
edge e=es[i];
if(Find(e.u)==Find(e.v)) continue;
par[Find(e.u)]=Find(e.v);
res+=e.cost;
}
return res;
}
int main()
{
while(cin>>n>>k){
int sum=;
for(int i=;i<k;i++){
cin>>es[i].u>>es[i].v>>es[i].cost;
sum+=es[i].cost;
}
cout<<sum-kruscal()<<endl;
}
return ;
}
还是菜的一P,中了n的毒,不能放松警惕啊
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=;
int n,k,cnt,res,sum;
struct edge
{
int u,v,w;
}es[maxn];
int cmp(edge x,edge y)
{
return x.w<y.w;
}
int par[maxn];
void init()
{
for(int i=;i<maxn;i++) par[i]=i;
}
int Find(int x)
{
if(par[x]==x) return x;
else return Find(par[x]);
}
int kruscal()
{
init();
sort(es,es+k,cmp);
res=;
cnt=n;
for(int i=;i<k;i++){
int u=es[i].u,v=es[i].v,w=es[i].w;
if(Find(u)==Find(v)) continue;
par[Find(u)]=Find(v);
res+=w;
if(--cnt==) break;
}
return res;
}
int main()
{
while(cin>>n>>k){
sum=;
for(int i=;i<k;i++){
cin>>es[i].u>>es[i].v>>es[i].w;
sum+=es[i].w;
}
cout<<sum-kruscal()<<endl;
}
return ;
}
洛谷P2820 局域网 (最小生成树)的更多相关文章
- 最小生成树 & 洛谷P3366【模板】最小生成树 & 洛谷P2820 局域网
嗯... 理解生成树的概念: 在一幅图中将所有n个点连接起来的n-1条边所形成的树. 最小生成树: 边权之和最小的生成树. 最小瓶颈生成树: 对于带权图,最大权值最小的生成树. 如何操作? 1.Pri ...
- 洛谷——P2820 局域网
P2820 局域网 题目背景 某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成 ...
- 洛谷 P2820 局域网
题目链接 https://www.luogu.org/problemnew/show/P2820 题目背景 某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内 ...
- 洛谷 P2820 局域网x
题目背景 某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象.因为连 ...
- 洛谷P2820 局域网
#include<bits/stdc++.h> using namespace std; ; ; int n,k,sum,tot; struct node{ int cnt,fa; }f[ ...
- 洛谷U4807抽水机[最小生成树]
题目背景 kkk被Farmer John和他的奶牛贝茜虐的很惨,然后她也想体验下一个Farmer的生活.但她又懒得种地,就选择养鱼. 题目描述 这些鱼都是热带鱼(废话),很娇贵(比kkk娇贵),要经常 ...
- 【洛谷】【最小生成树】P1195 口袋的天空
[题目背景:] 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. [题目描述:] 给你云朵的个数N,再给你M个关系,表示哪些 ...
- [洛谷P4208][JSOI2008]最小生成树计数
题目大意:有$n$个点和$m$条边(最多有$10$条边边权相同),求最小生成树个数 题解:对于所有最小生成树,每种边权的边数是一样的.于是就可以求出每种边权在最小生成树中的个数,枚举这种边的边集,求出 ...
- 洛谷P4208 [JSOI2008]最小生成树计数——题解
题目传送 前置知识:对于同一个图的所有最小生成树,权值相等的边的数量相同. 可以简单证明一下: 我们可以从kruskal的过程考虑.这个算法把所有边按权值大小从小到大排序,然后按顺序看每条边,只要加上 ...
随机推荐
- adb logcat查看某个进程的输出日志
adb logcat查看某个进程的输出日志 adb logcat 默认是没有这个功能的,我实现了一个小bash函数,添加到你$HOME/.bashrc 文件中: # 作用:能够通过进程名显示log # ...
- windows怎么与虚拟机linux共享
虚拟机linux与widows主机的进行文件共享 使用虚拟机的共享目录功能 使用vmware(vmware workstation 5)下shared folders功能实现vmware中host与g ...
- 【AI】神经网络基本词汇
neural networks 神经网络activation function 激活函数hyperbolic tangent 双曲正切函数bias units 偏置项activation 激活值for ...
- VS每次F5都重新编译代码,即使没有任何修改
遇到一个奇怪现象,不知道怎么设置了,突然工程的Release模式下,F5每次都要重新编译代码,而且是全部代码都重新编译 而Debug模式没问题 重启VS,重启机器,清理工程重新生成工程都无法解决 最后 ...
- Cocoapods 创建自己的公开库、私有库
如何创建自己的共有库 1.注册Trunk trunk需要CocoaPods 0.33版本以上,用pod --version 命令查看版本 CocoaPods版本 如果版本低,需要升级: sudo ge ...
- 大整数加减运算的C语言实现
目录 大整数加减运算的C语言实现 一. 问题提出 二. 代码实现 三. 效果验证 大整数加减运算的C语言实现 标签: 大整数加减 C 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器 ...
- 后渗透神器Empire的简单使用
1.安装 1.1.系统环境: Debian系Linux:例如Ubuntu和Kali(本文使用Kali作为环境) 1.2.安装命令: 安装最后需要输入用户名.密码 wget https://raw.gi ...
- linux操作2
第2天 linux操作系统的目录结构 bin #可执行程序的安装目录,命令boot #系统启动引导目录dev #设备目录,deviceetc #软件配置文件目录home #用户的家目录lib #系 ...
- linux的基本操作(NFS服务配置)
服务配置 [什么是NFS] NFS会经常用到,用于在网络上共享存储.这样讲,你对NFS可能不太了解,笔者不妨举一个例子来说明一下NFS是用来做什么的.假如有三台机器A.B.C,它们需要访问同一个目录, ...
- Python3.6连接mysql(一)
初次学习python,因为python连接mysql的时候,需要安装mysql驱动模块 之前按照廖雪峰网站上的方法安装mysql驱动的方法: MySQL官方提供了mysql-connector-pyt ...