C - 小Y上学记——认识新同学

Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others)

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

可以转化成最小生成树来求解即可:

代码:2015.7.30(自己写的还是比不上网上大神的模板,唉。。。)
 #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上学记——认识新同学的更多相关文章

  1. D - 小Y上学记——要迟到了!

    D - 小Y上学记——要迟到了! Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  2. B - 小Y上学记——小Y的玩偶

    B - 小Y上学记——小Y的玩偶 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  3. A - 小Y上学记——修学分

    A - 小Y上学记——修学分 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) S ...

  4. 【luogu P4007 清华集训2017】小Y和恐怖奴隶主

    题目背景 “A fight? Count me in!” 要打架了,算我一个. “Everyone, get in here!” 所有人,都过来! 题目描述 小 Y 是一个喜欢玩游戏的 OIer.一天 ...

  5. 【luogu P4005 清华集训2017】小Y和地铁

    题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...

  6. CCF CSP 201812-1 小明上学

    题目链接:http://118.190.20.162/view.page?gpid=T80 问题描述 试题编号: 201812-1 试题名称: 小明上学 时间限制: 1.0s 内存限制: 512.0M ...

  7. P4005 小 Y 和地铁

    题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...

  8. loj #2325. 「清华集训 2017」小Y和恐怖的奴隶主

    #2325. 「清华集训 2017」小Y和恐怖的奴隶主 内存限制:256 MiB时间限制:2000 ms标准输入输出 题目类型:传统评测方式:文本比较   题目描述 "A fight? Co ...

  9. [LOJ#2323]「清华集训 2017」小Y和地铁

    [LOJ#2323]「清华集训 2017」小Y和地铁 试题描述 小Y是一个爱好旅行的OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的 ...

随机推荐

  1. Hybrid App(二)Cordova+android入门

    上一篇介绍了app开发如何选型,由于公司人员组织结构的原因(app native较少,每个月一次迭代),因此选型hybrid app. 接下来说一下环境搭建: 一.Java环境 (1)安装jdk (2 ...

  2. mac安装lavaral

    1,安装composer # brew install josegonzalez/php/composer

  3. Java中的native关键字与JNI

    一.先说一下大致的意思: jdk提供的类库源代码中有一些方法没有实现,这些方法前有native关键字,如object类中的 : native Object clone() throws CloneNo ...

  4. flex flashplayer 程序 和 air 程序 通过 LocalConnection 通信

    flashplayer 做控制端: <?xml version="1.0" encoding="utf-8"?> <s:Application ...

  5. wpf xmal基础

    1.名称空间的引用 比如想使用System.Windows.Controls名称空间 首先需要把改名称空间所在的程序集presentationFramework.dll引用到项目里 然后在根元素的起始 ...

  6. WWW 资源下载与表单提交

    在注册与验证用户信息,以及非即时通信的游戏中,我们可以使用WWW类使用短链接来完成客户端与服务器数据的通信,今天我们将使用用POST方法来完成的用户注册与登录,在最后介绍下其它资源的加载. 首先使用P ...

  7. LNA

    low noise amplifier ,低噪声放大器. PA主要侧重输出功率,LNA侧重噪声系数,所以LNA用于前级,PA用作末级.

  8. setcookie 设置无效

    转载请署名 achieverain,谢谢 经常见人问PHP程序无法设置cookie.下面把我遇见过的情况都说一遍 1 PHP程序在执行setcookie之前有输出. 解决 :    把setcooki ...

  9. Qt事件和事件循环

    在处理QT循环事件的时候遇到了问题,查了半天资料都没弄明白问题出在哪,后来找大牛同事问了一下,同事就给我写了QCoreApplication::processEvent()这个函数,好啦,终于搞定了, ...

  10. Docker 基本管理

    镜像: Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker Hub 公共注册服务器中的仓库). 由于官方镜像pull很慢 我们这边 ...