C - 小Y上学记——认识新同学
C - 小Y上学记——认识新同学
Problem Description
小Y来到了一个新的班级,新的集体,第一件事肯定是要去认识新同学。
然而想认识全班同学,所需要的代价是很大的,所以小Y想让代价尽可能小。
认识新同学有两种办法,一种是直接去认识,另一种是通过已经认识的同学去认识新同学。
小Y想知道最小代价是多少呢?
Input
多组数据,每组数据首先是一个N,表示新的班级的同学数(包括小Y,2<=N<=1000)
接下来是N-1个整数,表示小Y直接认识第i名同学所需要的代价。
接下来是一个N-1阶矩阵,其中第i行第j列表示通过第i名同学认识第j名同学的代价。
其中保证对角线为0,且保证对称.
所有代价均为不超过1000的正整数。
Output
Sample Input
3
2 4
0 1
1 0
4
2 4 3
0 1 2
1 0 1
2 1 0
Sample Output
3
4
可以转化成最小生成树来求解即可:
#include <iostream>
#include <stdio.h>
#include <queue>
using namespace std;
#define MAX 11010
int ID[MAX];
int Sum;
struct Node
{
int a,b,v;
friend bool operator <(Node a,Node b)
{
return a.v>b.v;
}
};
void Cread(int N)
{
for(int i=;i<=N;i++){ID[i]=i;}
}
int Find(int x)
{
int TMD=x,TMP;
while(TMD!=ID[TMD])TMD=ID[TMD];
while(x!=TMD){TMP=ID[x];ID[x]=TMD;x=TMP;}
return x;
}
int main()
{
int N,i,j,a,b,A,B,Q,SIGN;
Node NUM;
while(scanf("%d",&N)!=EOF)
{
priority_queue<Node>ID_N;
Cread(N);Sum=;SIGN=;
for(i=;i<=N;i++)
{
NUM.a=;NUM.b=i;
scanf("%d",&NUM.v);
ID_N.push(NUM);
}
for(i=;i<=N;i++)
{
for(j=;j<=N;j++)
{
NUM.a=i;NUM.b=j;
scanf("%d",&NUM.v);
if(i==j)NUM.v=MAX;
else ID_N.push(NUM);
}
}
while(!ID_N.empty())
{
if(N==SIGN+)break;
NUM=ID_N.top();ID_N.pop();
A=Find(NUM.a);B=Find(NUM.b);
if(A!=B)
{
ID[A]=B;
Sum+=NUM.v;
SIGN++;
}
}
printf("%d\n",Sum);
}
return ;
}
C - 小Y上学记——认识新同学的更多相关文章
- D - 小Y上学记——要迟到了!
D - 小Y上学记——要迟到了! Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- B - 小Y上学记——小Y的玩偶
B - 小Y上学记——小Y的玩偶 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- A - 小Y上学记——修学分
A - 小Y上学记——修学分 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) S ...
- 【luogu P4007 清华集训2017】小Y和恐怖奴隶主
题目背景 “A fight? Count me in!” 要打架了,算我一个. “Everyone, get in here!” 所有人,都过来! 题目描述 小 Y 是一个喜欢玩游戏的 OIer.一天 ...
- 【luogu P4005 清华集训2017】小Y和地铁
题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...
- CCF CSP 201812-1 小明上学
题目链接:http://118.190.20.162/view.page?gpid=T80 问题描述 试题编号: 201812-1 试题名称: 小明上学 时间限制: 1.0s 内存限制: 512.0M ...
- P4005 小 Y 和地铁
题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...
- loj #2325. 「清华集训 2017」小Y和恐怖的奴隶主
#2325. 「清华集训 2017」小Y和恐怖的奴隶主 内存限制:256 MiB时间限制:2000 ms标准输入输出 题目类型:传统评测方式:文本比较 题目描述 "A fight? Co ...
- [LOJ#2323]「清华集训 2017」小Y和地铁
[LOJ#2323]「清华集训 2017」小Y和地铁 试题描述 小Y是一个爱好旅行的OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的 ...
随机推荐
- Servlet源码初探
年底,公司的事情告一段落,就来捣鼓一下这个Servlet源码,为下一步的spingmvc源码初探做准备 1.Servlet接口 public interface Servlet { void init ...
- 运行ORB-SLAM笔记_编译篇(一)
1.下载代码 https://github.com/raulmur/ORB_SLAM/ (同时也可以看看作者的牛叉论文,我是打算先用代码,再回头看论文) 2.打开后如下 就好像是用一件新产品 ...
- 关于js的那些事儿
什么是JS? JavaScript是一种基于对象(Object)和事件驱动(Event Driven),并具有相对安全性的客户端脚本语言.同时也是一种广泛用户客户端Web开发的脚本语言,常用来给HTM ...
- Unity发布安卓无法读取StreamingAssets文件下数据库的问题
在移动端StreamingAssets下的文件是只读的,但大家可能跟我一样遇到了发布安卓以后放在StreamingAssets下的数据库文件一样读取不了, 但其实这个文件夹其实是可以读取到的,所以我们 ...
- Java版冒泡排序和选择排序
一.理解说明 1.理解和记忆 冒泡排序:依次定位数组元素,每次只和相邻的且符合条件的元素交换位置. 选择排序:依次在数组的每个位置,通过逐个对比选择出最大或最小的元素. 2.知识点说明 (1)数组是引 ...
- xfs文件系统磁盘配额
引言 这篇文章简单介绍一下xfs文件系统的磁盘配额配置. 文章目录 0×1.开启分区磁盘配额 0×2.使用xfs_quota命令配置磁盘配额 0×1.开启分区磁盘配额 对于ext4文件以前的文件系统, ...
- maven打包配置
maven打包配置,到底要打包哪些文件,如何配置?? <build> <finalName>weatherAdminSys</finalName> <plug ...
- Python学习之旅--第二周--元组、字符串、运算、字典
一.元组 另一种有序列表叫元组:tuple.tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字: # Author:Tim Gu tuple = (" ...
- VS编译wxWidgets
准备工作 下载wxWidgets源码包(官网),我用的是3.02版: 安装Visual Studio.我用的是VS 2015 RC: 编译源码 解压wxWidgets的源码包,会得到一大堆文件.进入b ...
- Spring 整合 Redis出现的一个Timeout方法找不到的问题
直接说问题吧. 依赖包:jedis 2.9.0. spring-data-reids 1.4.1 提示:redis.clients.jedis.JedisShardInfo.setTimeout(I) ...