题目链接:https://pintia.cn/problem-sets/15/problems/897

题意:给出n个城镇,然后给出n×(n-1)/2条边,即每两个城镇之间的边,包含起始点,终点,修建的花费,以及是否已经修建。需要求出最小花费让城镇两两可达。

思路:最小生成树变形题,首先将边排序,将已经修好的放在前面,未修好的放在后面,并均按照花费升序排列。之后用并查集将已经连通的城镇并在一起,然后对未修好的道路使用kruskal算法,直到所有的城镇两两可达,此时的花费即最小。

AC代码:

 #include<bits/stdc++.h>
using namespace std; struct node{
int s,e,c,f;
}a[]; bool cmp(node x,node y){
if(x.f==y.f) return x.c<y.c;
return x.f>y.f;
} int n,m,res;
int root[]; int getr(int k){
if(root[k]==k) return k;
else return root[k]=getr(root[k]);
} int main(){
scanf("%d",&n);
m=n*(n-)/;
for(int i=;i<m;++i)
scanf("%d%d%d%d",&a[i].s,&a[i].e,&a[i].c,&a[i].f);
sort(a,a+m,cmp);
for(int i=;i<=n;++i)
root[i]=i;
for(int i=;i<m;++i){
int rs=getr(a[i].s),re=getr(a[i].e);
if(a[i].f==)
root[re]=rs;
else if(rs!=re)
res+=a[i].c,root[re]=rs;
}
printf("%d\n",res);
}

pta7-20 畅通工程之局部最小花费问题(Kruskal算法)的更多相关文章

  1. PTA 7-1 畅通工程之局部最小花费问题(35 分)

    7-1 畅通工程之局部最小花费问题(35 分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的 ...

  2. PTA 7-2 畅通工程之局部最小花费问题 (35分)

    PTA 7-2 畅通工程之局部最小花费问题 (35分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出"畅通工程"的目标:使整个地区任何两个城镇间都可以实 ...

  3. PTA 7-50 畅通工程之局部最小花费问题(最小生成树Kruskal)

    某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可). ...

  4. 8-06. 畅通project之局部最小花费问题(35)(最小生成树_Prim)(ZJU_PAT)

    题目链接:http://pat.zju.edu.cn/contests/ds/8-06 某地区经过对城镇交通状况的调查.得到现有城镇间高速道路的统计数据,并提出"畅通project" ...

  5. 还是畅通工程(1233 并查集+kruskal)

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  6. 还是畅通工程(最小生成树 并查集 Prim Kruskal)

    Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只 ...

  7. 最小生成树问题:Kruskal算法 AND Prim算法

    Kruskal算法: void Kruskal ( ) {     MST = { } ;                           //边的集合,最初为空集     while( Edge ...

  8. 最小生成树问题(Kruskal 算法)(克鲁斯卡尔)

    如图就是Kuskal算法 将图中的每条边按照权值从小到大排序,每次加起来就行,注意的是不要形成回路: 重点是如何用代码实现不能形成回路 看代码; #include <cstdio> #in ...

  9. 最小生成树问题:kruskal算法

    struct edge(int u,v,cost;};bool comp(const edge& e1,const edge& e2){    return e1.cost<e2 ...

随机推荐

  1. day09-列表

    1.列表的格式list与其他语言的数组相似,基础数据类型,可以存储各种数据类型,可以存储大量的数据,32位python可以存储2的29次方个元素,即536870912个元素,64位python的限制是 ...

  2. Spring boot 错误处理机制

    请求方式时,若不存在 浏览器出现White label Error Page 错误页面 其他客户端出现响应一个JSON格式文本包含错误码等信息 浏览器发送请求的请求头: 客户端请求头 这样就能区分来自 ...

  3. 5分钟快速打造WebRTC视频聊天<转>

    原文地址: 5分钟快速打造WebRTC视频聊天 百度一下WebRTC,我想也是一堆.本以为用这位朋友( 搭建WebRtc环境 )的SkyRTC-demo 就可以一马平川的实现聊天,结果折腾了半天,文本 ...

  4. eclipse,import,导入项目显示红色叹号

    [场景]eclipse导入项目后,该项目出现红色叹号.打开类文件,会有无数的“The type ... cannot be resolved.”等稀奇古怪的编译错误. [分析]当前eclipse环境中 ...

  5. (已解决)搭建ssm框架时给springmvc传入对象传不进去,传单个字符串可以

    问题如题: springmvc会自动解析传入的内容,只要将表单中的对象名字和pojo一一对应,否则会报错. jsp默认好像是会加上请求头. 如果要是用其他的方式去给接口传入对象.要加上请求头. Con ...

  6. js弹出div层内容(按回退键关闭div层及遮罩)

    <!--弹出的div列表对应的详情--> <div id="newhtml" class="white_content"> <di ...

  7. python 中的比较==和is

    Python 中的比较:is 与 == 在 Python 中会用到对象之间比较,可以用 ==,也可以用 is .但是它们的区别是什么呢? is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象 ...

  8. AJAX之发送GET请求

    用jquery发送get请求 function AjaxSubmit1() { $.ajax({ //用jQuery发送 url: '/app04/ajax1/', type: 'GET', data ...

  9. Mysql 死锁分析学习

    https://blog.csdn.net/aesop_wubo/article/details/8286215   * CREATE TABLE `user_item` ( * `id` BIGIN ...

  10. Oracle 学习总结 - 问题诊断

    搜集常用诊断sql https://blog.csdn.net/yangshangwei/article/details/52449489 lock相关: 1. 查看lock, 打开两个事物,事物1更 ...