博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3371(kruskal)
阅读量:5107 次
发布时间:2019-06-13

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

Connect the Cities

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 15569    Accepted Submission(s): 4108

Problem Description
In 2100, since the sea level rise, most of the cities disappear. Though some survived cities are still connected with others, but most of them become disconnected. The government wants to build some roads to connect all of these cities again, but they don’t want to take too much money.  
 

 

Input
The first line contains the number of test cases.
Each test case starts with three integers: n, m and k. n (3 <= n <=500) stands for the number of survived cities, m (0 <= m <= 25000) stands for the number of roads you can choose to connect the cities and k (0 <= k <= 100) stands for the number of still connected cities.
To make it easy, the cities are signed from 1 to n.
Then follow m lines, each contains three integers p, q and c (0 <= c <= 1000), means it takes c to connect p and q.
Then follow k lines, each line starts with an integer t (2 <= t <= n) stands for the number of this connected cities. Then t integers follow stands for the id of these cities.
 

 

Output
For each case, output the least money you need to take, if it’s impossible, just output -1.
 

 

Sample Input
1 6 4 3 1 4 2 2 6 1 2 3 5 3 4 33 2 1 2 2 1 3 3 4 5 6
 

 

Sample Output
1
 
 
题意:多组测试用例,每组第一行是n m k,表示n个城市,m条路的信息,和已经连接上的K个城市信息。
接下来m行每行是城市A到B建路需要的花费。再接下来k行每行第一个数为t,之后t个数表示已经连接在一起的城市。
在已经连接的基础上进行城市间的连通,求解全部联通的最少费用。不能连通输出-1
 
典型的kruskal算法,并查集和贪心算法求解最小生成树,最后判断城市生成的树是否唯一。
 
这题非常奇怪,用JAVA死活TLE,然后又用c++写,然后还是超时,然后又把启发式搜索什么的加进去也没用,最后改成g++就过了..过了。。
#include 
#include
#include
using namespace std;int father[505];int dep[505];struct Seg{ int x,y,len;} seg[25010];int cmp(Seg a,Seg b){ return a.len

 

转载于:https://www.cnblogs.com/liyinggang/p/5325678.html

你可能感兴趣的文章
oracle+609,Fatal NI Connect 12560' And 'ORA-609 解决方法
查看>>
oracle会话比进程高,oracle数据库CPU特别高的解决方法详解
查看>>
linux查询进程ps grep,Linux下通过grep查找指定的进程是否存在
查看>>
linux终端文件夹颜色,linux 修改文件夹颜色 终端颜色
查看>>
linux eclipse进程,Linux环境中用Eclipse搭建C++程序开发平台
查看>>
linux启动redis指定端口,linux配置redis三种启动方式
查看>>
linux在当前目录使用test,为什么所有的文件都显示不存在?,Linux 常用命令
查看>>
linux下Qt程序deb打包,Ubuntu1604打包QT的程序
查看>>
分析linux内核 内存管理,Linux内核代码分析之内存管理.doc
查看>>
linux mint开发环境,linux mint 开发环境配置
查看>>
linux中cut -c命令,linux中~/cut/argus/
查看>>
linux 写一个包含test的脚本程序,Linux运维学习作业2-1-bash脚本编写
查看>>
linux汇编码表,汇编码表及扩展码表(范文).doc
查看>>
linux 内核模块 proc,Linux内核模块与_proc文件系统
查看>>
linux sudo yum命令详解,每天一个Linux命令之sudo命令详解
查看>>
linux登录认证源码,图解如何在Linux上配置git自动登录验证
查看>>
arm linux g 找不到,/ bin / sh:1:arm-linux-gcc:在ubuntu上找不到
查看>>
linux时钟 跳变,关于am3359 linux下系统时间跳变的问题
查看>>
c语言比较十个数大小冒泡法,【C语言】用选择法、冒泡法分别对10个整数从小到大排序...
查看>>
判断奇偶数的程序c语言子函数,C程序检查数字是偶数还是奇数
查看>>