博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 U10206 Cx的治疗
阅读量:4354 次
发布时间:2019-06-07

本文共 1381 字,大约阅读时间需要 4 分钟。

题目背景

「Cx的故事」众所周知,Cx是一个宇宙大犇。由于Cx在空中花园失足摔下,导致他那蕴含着无穷智慧的大脑受到了严重的损伤,许多的脑神经断裂。于是,Cx的wife(有么?)决定请巴比伦最好的医师治疗。但是,Cx的wife是个十分吝啬的人,虽然她想将Cx治好,但是她又不肯出过多的钱,而脑神经的重新连接需要大量的花费。所以,当她知道来自未来的你时,她恳求你去帮她计算一下如何才能将Cx的神经元全部重新连接起来,而花费最小。

题目描述

神经网络就是一张无向图,图中的节点称为神经元,神经元已经按照1~N的顺序排好号,而且两个神经元之间至多有一条脑神经连接。

现有N个神经元,M条仍然完好的脑神经,连接神经元Ai与Bi。

医生给出能够连接的t条脑神经,分别连接神经元Aj与Bj,并给出连接所需的花费Ci。

请编写程序计算将所有神经元连通的最小花费w。

输入输出格式

输入格式:

 

第一行为两个整数N,M (1<=N<=10000,1<=M<=100000) 表示一共有N个神经元,有M条依旧完好的脑神经。

接下来M行每行有两个整数Ai,Bi (1<=Ai,Bi<=10000) 表示神经元Ai,Bi已经连在一起。

接下来一行有一个整数t (1<=t<=10000)表示医生能连接的神经个数。

接下来t 行有三个整数 Aj ,Bj ,Cj (1<=Ai,Bi,Cj<=10000) 表示神经元Aj,Bj能通过Cj的花费将其连在一起。

 

输出格式:

 

仅一行,为一个整数,表示将Cx的神经元连通起来的最小花费w。若不能将其全部连通,请输出-1。

 

输入输出样例

输入样例#1:
10 51 52 63 73 83 9102 4 103 6 152 4 92 6 345 7 642 8 263 7 165 2 73 9 138 5 12
输出样例#1:
-1
输入样例#2:
10 51 52 63 73 83 9108 10 103 6 152 4 92 6 345 7 642 8 263 7 165 2 73 9 138 5 12
输出样例#2:
38

说明

1<=N<=10000,0<=M<=100000;

1<=Ai,Bi,Aj,Bj<=10000;

1<=Cj<=100000;

1<=t<=100000;

 

最小生成树

#include 
#include
#include
#define N 100005using namespace std;void read(int &x){ x=0; char ch=getchar(); while(!isdigit(ch)) ch=getchar(); while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}}int fa[N<<1],cnt,t,m,n,dis[N<<1];struct node{ int x,y,z; bool operator<(node a)const { return z

 

转载于:https://www.cnblogs.com/ruojisun/p/7191626.html

你可能感兴趣的文章
div:给div加滚动栏 div的滚动栏设置
查看>>
java随机函数使用方法Random
查看>>
链表中环的入口结点
查看>>
凤姐讲学英语
查看>>
ActionBar
查看>>
5种方法实现数组去重
查看>>
2~15重点语法
查看>>
MVC - 单点登录中间件
查看>>
when not exists 用法
查看>>
easyui_datagrid_method_扩展
查看>>
Jquery插件 自制分步滑动页面(全屏横移)
查看>>
iOS封装功能生成 .framework
查看>>
maven-java包管理工具-01
查看>>
flask中的CBV,flash,Flask-Session,WTForms - MoudelForm,DBUtils 数据库连接池
查看>>
最近整理的提供免费代理列表的几个网站
查看>>
探偵ガリレオー転写る2
查看>>
快速排序算法C++实现[评注版]
查看>>
七尖记
查看>>
VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
查看>>
java面试题(摘录)
查看>>