[JOYOI1307] 联络员
题目限制
| 时间限制 | 内存限制 | 评测方式 | 题目来源 |
| 1000ms | 131072KiB | 标准比较器 | Local |
题目描述
Tyvj已经一岁了,网站也由最初的几个用户增加到了上万个用户,随着Tyvj网站的逐步壮大,管理员的数目也越来越多,现在你身为Tyvj管理层的联络员,希望你找到一些通信渠道,使得管理员两两都可以联络(直接或者是间接都可以)。Tyvj是一个公益性的网站,没有过多的利润,所以你要尽可能的使费用少才可以。
目前你已经知道,Tyvj的通信渠道分为两大类,一类是必选通信渠道,无论价格多少,你都需要把所有的都选择上;还有一类是选择性的通信渠道,你可以从中挑选一些作为最终管理员联络的通信渠道。数据保证给出的通行渠道可以让所有的管理员联通。
输入格式
第一行n,m表示Tyvj一共有n个管理员,有m个通信渠道
第二行到m+1行,每行四个非负整数,p,u,v,w 当p=1时,表示这个通信渠道为必选通信渠道;当p=2时,表示这个通信渠道为选择性通信渠道;u,v,w表示本条信息描述的是u,v管理员之间的通信渠道,u可以收到v的信息,v也可以收到u的信息,w表示费用。
输出格式
最小的通信费用
提示
样例解释:
1-2-3-4-1存在四个必选渠道,形成一个环,互相可以到达。需要让所有管理员联通,需要联通2和5号管理员,选择费用为5的渠道,所以总的费用为9
注意:
U,v之间可能存在多条通信渠道,你的程序应该累加所有u,v之间的必选通行渠道
数据范围:
对于30%的数据,n<=10 m<=100
对于50%的数据, n<=200 m<=1000
对于100%的数据,n<=2000 m<=10000
样例数据
| 输入样例 #1 | 输出样例 #1 |
|---|---|
5 6 |
9 |
提交地址 : JOYOI1307
题解:
水题;
考试考过;
Code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int n, m; struct edge
{
int x, y, val;
bool operator < (edge a){return val < a.val;}
}ed[];
int cnt;
inline void add(int x, int y, int z)
{
cnt++;
ed[cnt] = (edge){x, y, z};
}
int bi[], top;
int fa[];
inline int Find(int x){return x == fa[x] ? x : fa[x] = Find(fa[x]);}
int ans = ;
int tot; int main()
{
cin >> n >> m;
for (register int i = ; i <= m ; i ++)
{
int p, x, y, z;
scanf("%d%d%d%d", &p, &x,&y, &z);
add(x, y, z);
if (p == ) bi[++top] = cnt;
} for (register int i = ; i <= n ; i ++) fa[i] = i;
for (register int i = ; i <= top ; i ++)
{
int fx = Find(ed[bi[i]].x) , fy = Find(ed[bi[i]].y);
if (fx != fy) tot++;
ans += ed[bi[i]].val;
fa[fx] = fy;
}
sort(ed + , ed + + cnt);
for (register int i = ; i <= cnt ; i ++)
{
int fx = Find(ed[i].x), fy = Find(ed[i].y);
if (fx == fy) continue;
fa[fx] = fy;
ans += ed[i].val;
tot++;
if (tot == n - ) break;
}
cout << ans << endl;
return ;
}
[JOYOI1307] 联络员的更多相关文章
- AcWing 1143. 联络员
Tyvj已经一岁了,网站也由最初的几个用户增加到了上万个用户,随着Tyvj网站的逐步壮大,管理员的数目也越来越多,现在你身为Tyvj管理层的联络员,希望你找到一些通信渠道,使得管理员两两都可以联络(直 ...
- 【TYVJ】1307 联络员(最小生成树)
http://tyvj.cn/Problem_Show.aspx?id=1307 kruskal裸题.(水题红色警报) #include <cstdio> #include <cst ...
- 武汉北大青鸟解读2016年10大IT热门岗位
武汉北大青鸟解读2016年10大IT热门岗位 2016年1月5日 13:37 北大青鸟 这是IT从业者的辉煌时代,IT行业的失业率正处在历史的低点,而且有的岗位——例如网络和安全工程师以及软件开发人员 ...
- PB数据库相关
---------------------------------------------------------------- 数据库画板: 一张表定义了主键或者唯一索引,则能够在Results视窗 ...
- TOGAF架构能力框架之架构合同、成熟度模型和架构技能框架
TOGAF架构能力框架之架构合同.成熟度模型和架构技能框架 5. 架构合同 架构合同是在开发团体和赞助者之间关于架构的交付物.质量以及适用目标的联合协议,并且通过有效的架构治理将会促使这些协议的成功施 ...
- 企业架构研究总结(40)——TOGAF架构能力框架之架构合同、成熟度模型和架构技能框架
5. 架构合同 架构合同是在开发团体和赞助者之间关于架构的交付物.质量以及适用目标的联合协议,并且通过有效的架构治理将会促使这些协议的成功施行.通过对合同的管理施行一个治理方法,如下几点将会得到保障: ...
- 实战DeviceIoControl 之六:访问物理端口
Q 在NT/2000/XP中,如何读取CMOS数据? Q 在NT/2000/XP中,如何控制speaker发声? Q 在NT/2000/XP中,如何直接访问物理端口? A 看似小小问题,难倒多少好汉! ...
- [转帖] CA如何保护自己的私钥
作者:Gh0u1L5链接:https://www.zhihu.com/question/22260090/answer/648910720来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...
- 【PMP】组织结构类型
1.简单型 描述:人员并肩工作,所有者/经营者直接做出主要决定并监督执行. PM角色:兼职(协调员) PM权限:极少(无) 项目管理人员:极少(无) 资源可用性:极少(无) 项目预算管理人:负责人 2 ...
随机推荐
- HDFS原理及操作
1 环境说明 部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放 Hadoop等组件运行包.因为该目录用于安装had ...
- Python基础(十)
今日主要内容 补充:传参与参数分配区别 动态传参 函数注释 名称空间 函数名的使用 函数嵌套 global和nonlocal 补充:传参与参数分配区分 先看一个函数定义和函数调用 def func(a ...
- JS 防抖和节流
防抖和节流 在处理高频事件,类似于window的resize或者scorll,或者input输入校验等操作时.如果直接执行事件处理器,会增大浏览器的负担,严重的直接卡死,用户体验非常不好. 面对这种情 ...
- Day 14 查找文件 find
find 查找方式 1.按照名称进行查找 [root@oldboyedu ~]# find ./ -name "*eth0" 2.按照名称查找(不区分大小写) [root@oldb ...
- Vue基础项目配置
一,使用Vuejs搭建项目需要一些基础配置,这样能使的编程过程事半功倍 1.首先下载nodejs,然后使用nodejs使用NPM命令下载VueCli3.0以上的Vue脚手架.通过脚手架可以使用Vue ...
- HashMap浅析
一.概述 HashMap,基于哈希结构的Map接口的一个实现,无序,允许null键值对,线程不安全的.可以使用集合工具类Collections中的synchronizedMap方法,去创建一个线程安全 ...
- APP自動化測試腳本1
package com.lemon.day01; import java.net.MalformedURLException; import java.net.URL; import java.uti ...
- FlagCounter被封杀?自己实现一个简单的多国访客计数器
起因 前段时间发现博客右边的FlagCounter计数器突然没了,又看到了博客园封杀了FlagCounter的消息,有点摸不着头脑.于是上FlagCounter的网站上看了一眼,发现最近出现的来自新国 ...
- 品Spring:注解之王@Configuration和它的一众“小弟们”
其实对Spring的了解达到一定程度后,你就会发现,无论是使用Spring框架开发的应用,还是Spring框架本身的开发都是围绕着注解构建起来的. 空口无凭,那就说个最普通的例子吧. 在Spring中 ...
- layDate——初步使用
layui系列中layDate的使用教程网址 https://www.layui.com/laydate/ 我这里简单举例: 1.引入js <script type="text/jav ...