pta7-20 畅通工程之局部最小花费问题(Kruskal算法)
题目链接: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算法)的更多相关文章
- PTA 7-1 畅通工程之局部最小花费问题(35 分)
7-1 畅通工程之局部最小花费问题(35 分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的 ...
- PTA 7-2 畅通工程之局部最小花费问题 (35分)
PTA 7-2 畅通工程之局部最小花费问题 (35分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出"畅通工程"的目标:使整个地区任何两个城镇间都可以实 ...
- PTA 7-50 畅通工程之局部最小花费问题(最小生成树Kruskal)
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可). ...
- 8-06. 畅通project之局部最小花费问题(35)(最小生成树_Prim)(ZJU_PAT)
题目链接:http://pat.zju.edu.cn/contests/ds/8-06 某地区经过对城镇交通状况的调查.得到现有城镇间高速道路的统计数据,并提出"畅通project" ...
- 还是畅通工程(1233 并查集+kruskal)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- 还是畅通工程(最小生成树 并查集 Prim Kruskal)
Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只 ...
- 最小生成树问题:Kruskal算法 AND Prim算法
Kruskal算法: void Kruskal ( ) { MST = { } ; //边的集合,最初为空集 while( Edge ...
- 最小生成树问题(Kruskal 算法)(克鲁斯卡尔)
如图就是Kuskal算法 将图中的每条边按照权值从小到大排序,每次加起来就行,注意的是不要形成回路: 重点是如何用代码实现不能形成回路 看代码; #include <cstdio> #in ...
- 最小生成树问题:kruskal算法
struct edge(int u,v,cost;};bool comp(const edge& e1,const edge& e2){ return e1.cost<e2 ...
随机推荐
- scrapy之downloader执行流程
Agent = client.Agent class ScrapyAgent(object): _Agent = Agent#为twisted的client.Agent类 _ProxyAgent = ...
- vue-router 动态导航 router-link :to属性
经常碰到这类需求,从后台获取数据后再前程连接,参数id动态获取 <el-row v-for="item in Travels"> <el-col :span=&q ...
- include 模板标签
{%load staticfiles %}就能使用include标签了 {% include %}该标签允许在(模板中)包含其他的模板的内容,标签的参数是所要包含的模板名称,可以是一个变量,也可以是用 ...
- Delphi访问网页中的下拉菜单
Delphi通过TWebBrowser浏览网页,然后访问该网页中的下拉菜单: uses MsHtml;procedure TForm1.Button1Click(Sender: TObject);va ...
- 对比深度学习十大框架:TensorFlow 并非最好?
http://www.oschina.net/news/80593/deep-learning-frameworks-a-review-before-finishing-2016 TensorFlow ...
- LeetCode OJ 15. 3Sum
题目 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...
- IIS8.0 部署WCF Services
今天在Win 8的IIS上部署WCF Services,访问SVC文件时出现找不到处理程序的错误,以前遇到这个问题时都是尝试通过注册asp.net的方式处理一下,但是在Win8下这招不灵了,出现如下提 ...
- 设置git的http代理
如果git仓库不和本地代码之间不可以直达,这个时候就可以考虑使用git 代理的方式提交代码到git仓库了; git http代理或者https代理,配置在~/.gitconfig 文件下,可以直接编辑 ...
- mysql 5.7.3.0-m13安装教程
安装mysql百度经验地址:(默认安装,除了选择不更新和选择保存路径,其它基本是下一步下一步) http://jingyan.baidu.com/article/7e440953d6f0702fc1e ...
- beta分布 java代码
public class BetaDistributionActivity { /** * @param alpha: eg. click * @param beta : eg. pv - click ...