HDU 3371 Connect the Cities(prim算法)
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=3371
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.
/*
问题
输入已经存在的图以及将要增加的边及其花费,计算并输出最小生成树还需要的最小花费 解题思路
将现在的图连起来使得它们的花费为0,再加入将要建设的边,直接跑一边prim即可,注意不能构成最小生成树
的情况说出-1,代码中的u == -1 结束很关键。
*/
#include<cstdio>
#include<cstring> const int N=;
const int INF=;
int e[N+][N+],a[N],dis[N],bk[N];
int prim();
int n,m,k; int main(){
int T,i,j,q,t1,t2,t3,t;
scanf("%d",&T);
while(T--){
for(i=;i<=N;i++){
for(j=;j<=N;j++){
e[i][j] = i==j?:INF;
}
}
scanf("%d%d%d",&n,&m,&k);
for(i=;i<=m;i++){
scanf("%d%d%d",&t1,&t2,&t3);
if(e[t1][t2] > t3){
e[t1][t2] = t3;
e[t2][t1] = t3;
}
}
for(i=;i<=k;i++){
scanf("%d",&t);
for(j=;j<=t;j++){
scanf("%d",&a[j]);
}
for(j=;j<=t-;j++){
for(q=j+;q<=t;q++){
e[ a[j] ][ a[q] ]=;
e[ a[q] ][ a[j] ]=;
}
}
} /*for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("%9d",e[i][j]);
}
printf("\n");
}*/
int ans=prim();
if(ans == -)
printf("-1\n");
else
printf("%d\n",ans);
}
return ;
} int prim()
{
int i;
for(i=;i<=n;i++)
dis[i]=e[][i];
memset(bk,,sizeof(bk));
bk[]=;
int c=,sum=,mina,u; while(c < n){
mina=INF;
u=-;
for(i=;i<=n;i++){
if(!bk[i] && dis[i] < mina){
mina=dis[i];
u=i;
}
}
//printf("u==%d\n",u);
if(u == -)
break;
bk[u]=;
c++;
sum += dis[u];
for(i=;i<=n;i++){
if(!bk[i] && dis[i] > e[u][i])
dis[i] = e[u][i];
}
}
if(u == -)
return -;
return sum;
}
HDU 3371 Connect the Cities(prim算法)的更多相关文章
- hdu 3371 Connect the Cities
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3371 Connect the Cities Description In 2100, since th ...
- hdu 3371 Connect the Cities (最小生成树Prim)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3371 题目不难 稍微注意一下 要把已经建好的城市之间的花费定义为0,在用普通Prim算法就可以了:我没 ...
- hdu 3371 Connect the Cities(最小生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3371 984ms风险飘过~~~ /************************************ ...
- HDU 3371 Connect the Cities(并查集+Kruskal)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=3371 思路: 这道题很明显是一道最小生成树的题目,有点意思的是,它事先已经让几个点联通了.正是因为它先 ...
- Hdu 3371 Connect the Cities(最小生成树)
地址:http://acm.hdu.edu.cn/showproblem.php?pid=3371 其实就是最小生成树,但是这其中有值得注意的地方:就是重边.题目没有告诉你两个城市之间只有一条路可走, ...
- HDU 3371 Connect the Cities 最小生成树(和关于sort和qsort的一些小发现)
解题报告:有n个点,然后有m条可以添加的边,然后有一个k输入,表示一开始已经有k个集合的点,每个集合的点表示现在已经是连通的了. 还是用并查集加克鲁斯卡尔.只是在输入已经连通的集合的时候,通过并查集将 ...
- hdu oj 3371 Connect the Cities (最小生成树)
Connect the Cities Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu 1102 Constructing Roads (Prim算法)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 Constructing Roads Time Limit: 2000/1000 MS (Jav ...
- hdoj 3371 Connect the Cities
Connect the Cities Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
随机推荐
- ASP.NET Web API 框架研究 Controller创建 HttpController介绍
对请求进行路由解析以及消息处理管道进行处理后,最后可以从HttpRequestMessage对象的属性字典中获取解析的路由数据,后边我们就可以根据其进行HttpController的创建,从前边几篇可 ...
- Android-Java-解决(多线程存钱案例)的安全隐患-synchronized
多线程存钱案例: package android.java.thread10; /** * 两个储户,到同一个银行存钱,每个人存了3次,一次1000000.00元 * 1.描述银行 * 2.描述储户任 ...
- Linux-IO重定向与管道
1. 输入与输出 标准输入 STDIN 文件描述符:0,默认:键盘输入 标准输出 STDOUT 文件描述符:1,默认:屏幕输出 错误输出 STDERR 文件描述符:2,默认:屏幕输出 2. 标准输出重 ...
- C#调用接口注意要点
在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存cookie值,再进行其他接 ...
- Win10远程桌面出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密Oracle修正 解决方法
升级至win10 最新版本10.0.17134,远程桌面连接Window Server时报错信息如下: 出现身份验证错误,要求的函数不正确,这可能是由于CredSSP加密Oracle修正. 解决方法: ...
- Oracle.ManagedDataAccess.Client.OracleException:“ORA-00936: 缺失表达式”
static void Main(string[] args) { string sql = "insert into StudentC(Stuid, Stuname, Stupass) v ...
- 为什么主流的 App 看起来都差不多?这可能是件好事
欢迎访问网易云社区,了解更多网易技术产品运营经验. 现在设计师可以把精力都花在真正有意义的地方了. 打开Instagram.Airbnb.Apple Music.Twitter.Dropbox或Lyf ...
- 深入解析SQL Server高可用镜像实现原理
本文来自网易云社区 SQL Server 是windows平台.NET架构下标配数据库解决方案,与Oracle.MySQL共同构成了DB-Engines Ranking的第一阵营,在国内外企业市场中有 ...
- skynet inject address file.lua
inject d test/inject_fuck.lua -- d 是服务的 handle 拿 simpledb.lua 举例,修改如下 local skynet = require "s ...
- Swift 里 Set(一)辅助类型
_UnsafeBitset  是一个固定大小的 bitmap,用来确定指定位置是否有元素存在. HashTable  具体的 hash 碰撞算法在HashTable里实现,目前使用的是简单的开放地 ...