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.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的 ...
随机推荐
- #大数加减乘除#校赛D题solve
#include<iostream> #include<cstdio> #include<cstring> #include<string> #incl ...
- C# 语言规范_版本5.0 (第6章 转换)
1. 转换 转换(conversion) 使表达式可以被视为一种特定类型.转换可导致将给定类型的表达式视为具有不同的类型,或其可导致没有类型的表达式获得一种类型.转换可以是隐式的 (implicit) ...
- kubernetes port nodePort targetPort 理解
port The port that the service is exposed on the service's cluster ip (virsual ip). Port is the serv ...
- SharpZipLib.dll 压缩文件,可以应用于MVC, webform. C# windows application 等等地方
Nuget 安装:Install-Package ICSharpCode.SharpZipLib.dll private void WriteZipFile(string[] filesToZip, ...
- Base algorithm
今天介绍几种常见的算法,在面试中或许能派上用场 1.字符串倒转 //Reverse a string public static string Reverse(string ori) { string ...
- 用angular实现$.param()
首先介绍一下$.param() 功能: 序列化对象或数组,返回字符串 eg: var params = { width:1900, height:1200 }; var str = jQuery.pa ...
- php curl拉取远程图片
<?php $url = "图片绝对地址/thumbnail.jpg"; $filename = 'curl.jpg'; getImg($url, $filename); / ...
- Arpa's loud Owf and Mehrdad's evil plan
Arpa's loud Owf and Mehrdad's evil plan time limit per test 1 second memory limit per test 256 megab ...
- Linux nfs+autofs 环境搭建
两台服务器环境为centos 6.6 1.安装配置nfs 安装portmap 和 nfs [root@node0 ~]# yum install portmap [root@node0 ~]# yu ...
- 《学习的艺术》 (The Art of Learning)——划小圈 (Making Smaller Circles)
“……我对象棋.武术以及范围更广的整个学习过程这三者的核心及相互关系的研究在一定程度上是受到了罗伯特.波席格<摩托车维护艺术>一书的启发.我决不会忘记指导我今后数年学习方式的那一幕.波席格 ...