POJ 2421 Constructing Roads(Kruskal算法)
题意:给出n个村庄之间的距离,再给出已经连通起来了的村庄。求把所有的村庄都连通要修路的长度的最小值。
思路:Kruskal算法
课本代码:
//Kruskal算法
#include<iostream>
using namespace std; int fa[120];
int get_father(int x){
return fa[x]=fa[x]==x?x:get_father(fa[x]);//判断两个节点是否属于一颗子树(并查集)
}
int main(){
int n;
int p[120][120];
while(scanf("%d",&n)!=EOF){
int i,j,k,m;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&p[i][j]);
for(i=0;i<n;i++) fa[i]=i;
scanf("%d",&m);
while(m--){
int a,b;
scanf("%d%d",&a,&b);
fa[get_father(a-1)]=get_father(b-1);// a 合并到 b
}
int ans=0;
for(k=1;k<=1000;k++)// kruskal 算法,这里每个长度都进循环,若加一个长度存在的标记,可以节省时间
for(i=0;i<n;i++)
for(int j=0;j<n;j++)
if(p[i][j]==k &&get_father(i)!=get_father(j)){
fa[fa[i]]=fa[j];//合并两颗子树(并查集)
ans+=k;
}
printf("%d\n",ans);
}
return 0;
}
代码2:加了mark标记长度是否存在,代码中-------------为添加部分
//Kruskal算法
#include<iostream>
using namespace std; int fa[120];
int mark[1010];//-------------标记长度是否存在
int get_father(int x){
return fa[x]=fa[x]==x?x:get_father(fa[x]);//判断两个节点是否属于一颗子树(并查集)
}
int main(){
int n;
int p[120][120];
while(scanf("%d",&n)!=EOF){
memset(mark,0,sizeof(mark));
int i,j,k,m;
for(i=0;i<n;i++)
for(j=0;j<n;j++){
scanf("%d",&p[i][j]);
mark[p[i][j]]=1;//-------------把当前的长度标记一下
}
for(i=0;i<n;i++) fa[i]=i;
scanf("%d",&m);
while(m--){
int a,b;
scanf("%d%d",&a,&b);
fa[get_father(a-1)]=get_father(b-1);// a 合并到 b
}
int ans=0;
for(k=1;k<=1000;k++)// kruskal 算法
if(mark[k]){// -------------------长度存在的时候,再进入这个循环
for(i=0;i<n;i++)
for(int j=0;j<n;j++)
if(p[i][j]==k &&get_father(i)!=get_father(j)){
fa[fa[i]]=fa[j];//合并两颗子树(并查集)
ans+=k;
}
}
printf("%d\n",ans);
}
return 0;
}
POJ 2421 Constructing Roads(Kruskal算法)的更多相关文章
- POJ 2421 Constructing Roads (Kruskal算法+压缩路径并查集 )
Constructing Roads Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19884 Accepted: 83 ...
- POJ 2421 Constructing Roads (最小生成树)
Constructing Roads Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u ...
- poj 2421 Constructing Roads 解题报告
题目链接:http://poj.org/problem?id=2421 实际上又是考最小生成树的内容,也是用到kruskal算法.但稍稍有点不同的是,给出一些已连接的边,要在这些边存在的情况下,拓展出 ...
- POJ 2421 Constructing Roads (最小生成树)
Constructing Roads 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/D Description There ar ...
- POJ - 2421 Constructing Roads 【最小生成树Kruscal】
Constructing Roads Description There are N villages, which are numbered from 1 to N, and you should ...
- POJ - 2421 Constructing Roads (最小生成树)
There are N villages, which are numbered from 1 to N, and you should build some roads such that ever ...
- POJ 2421 Constructing Roads
题意:要在n个城市之间建造公路,使城市之间能互相联通,告诉每个城市之间建公路的费用,和已经建好的公路,求最小费用. 解法:最小生成树.先把已经建好的边加进去再跑kruskal或者prim什么的. 代码 ...
- [kuangbin带你飞]专题六 最小生成树 POJ 2421 Constructing Roads
给一个n个点的完全图 再给你m条道路已经修好 问你还需要修多长的路才能让所有村子互通 将给的m个点的路重新加权值为零的边到边集里 然后求最小生成树 #include<cstdio> #in ...
- POJ 2421 Constructing Roads(最小生成树)
Description There are N villages, which are numbered from 1 to N, and you should build some roads su ...
随机推荐
- 【Selenium + Python】之 Excel、CSV、XML文件读取数据并运用数据百度查询
目录 从Excel读取数据进行百度搜索 从CSV读取数据进行百度搜索 从XML读取数据进行登录操作 附:其他学习资料(<xml.etree.ElementTree模块>.<pytho ...
- 09 nginx Rewrite(重写)详细解析
一:Rewrite(重写)详细解析 rewrite 重写 重写中用到的指令 if (条件) {} 设定条件,再进行重写 set #设置变量 return #返回状态码 break #跳出rewri ...
- PHP-Manual的学习----【序言】
2017年6月27日16:57:32 学习资料:2015-PHP-Manual 打好坚实的基础是做任何事的前提 序言: 笔记: 1.PHP,即"PHP: Hypertext Preproce ...
- PHP中使用POST发送请求的常用方式
前提概要: 在PHP进行项目开发过程中,使用post发送请求的情况很多,以下总结了项目中主要用的两种方式. 总结下: 在我接触到的项目中用到第二种情况较多,比如写:短信接口.....总体来说比较简单便 ...
- 用C#来学习唐诗三百首和全唐诗
Begin 最近把项目做完了,闲来无事,就想做点好玩的事情,刚好前几天下载了[唐诗三百首]和[全唐诗]这两个txt文件,正好用C#来整理一下. 然后导出QData格式,可以给其他软件读取. 以后弄个开 ...
- EhCache 集群 配置(RMI方式)
这里先说明下环境:JDK1.6.ehcache-core-2.1.0.jar.Tomcat6.Spring3.0.2.使用的是RMI方式配置集群的,这里先吐槽下遇到的情况,在搜相关知识的时候发现到处都 ...
- 【BZOJ4033】[HAOI2015]树上染色 树形DP
[BZOJ4033][HAOI2015]树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染 ...
- GCD多线程在swift中的变化
1.异步线程加载主线程刷新 DispatchQueue.global().async { // TODO:执行异步线程网络请求 DispatchQueue.main.async(execute: { ...
- 错误解决Error configuring application listener of class org.springframework.web.util.Log4jConfigListener(转发)
Spring MVC-----maven项目导入后启动tomcat出现如下错误 参考:http://blog.csdn.net/itlionwoo/article/details/17523371 解 ...
- 关于js中undefined的判断
在开发中遇到一个情景,当添加用户的时候不需要传入用户id,如果是修改那么需要传入id,因为用的是angular框架,参数是早就定义好了的,那么在新增用户的时候就会出现undefined的情况,之前我一 ...