还是畅通工程(prim和kruskal)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233
还是畅通工程
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 62608 Accepted Submission(s): 28422
当N为0时,输入结束,该用例不被处理。
1 2 1
1 3 2
2 3 4
4
1 2 1
1 3 4
1 4 1
2 3 3
2 4 2
3 4 5
0
5
Hint
Huge input, scanf is recommended.
#include<iostream>
using namespace std;
const int maxn=+;
const int inf=1e9+;
int n;
int cost[maxn][maxn];//cost[i][j]两点之间的距离
int mincost[maxn];//从集合x出发到各点的最近距离
bool vis[maxn];//是否在本集合中
void Prim()
{
mincost[]=;//选定1为起点
int ans=;
while(true)
{
int flag=-;
for(int i=;i<=n;i++)
{
if(!vis[i]&&(flag==-||mincost[i]<mincost[flag]))
flag=i;
}
if(flag==-) break;
vis[flag]=true;
ans+=mincost[flag];
for(int i=;i<=n;i++)
mincost[i]=min(mincost[i],cost[flag][i]);//更新 }
cout<<ans<<endl;
}
int main()
{
while(cin>>n)
{
if(n==) break;
for(int i=;i<=n;i++)//初始化
{
for(int j=;j<=n;j++)
{
cost[i][j]=inf;
}
cost[i][i]=;
mincost[i]=inf;
vis[i]=false;
}
for(int i=;i<n*(n-)/;i++)
{
int u,v,w;
cin>>u>>v>>w;
cost[u][v]=w;
cost[v][u]=w; }
Prim();
}
}
Kruskal:
在整个图中找到一条 最小的 不会形成环 的边
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=100*100+5;
int fa[maxn];
int n;
struct Edge
{
int u,v,w;//起点 终点 边的权值
}edge[maxn];
bool cmp(const Edge a,const Edge b)//快排
{
return a.w<b.w;//按权值从小到大
}
int Get_fa(int x)//找父亲节点
{
if(fa[x]==x) return x;
return fa[x]=Get_fa(fa[x]);
}
void Kruskal()
{
for(int i=1;i<=n;i++) fa[i]=i; //刚开始每个节点的父亲都是自己,熟悉的并查集
int ans=0,cnt=1;//cnt从1开始 为什么呢? 因为n-1条边确定n个点
for(int i=0;i<n*(n-1)/2;i++) //遍历每一条边
{
int x=Get_fa(edge[i].u);
int y=Get_fa(edge[i].v);
int w=edge[i].w;
if(x!=y)//判断是否属于同一个集合
{
ans+=w;
fa[x]=y;
cnt++;
}
if(cnt==n)//n个村庄已经连接起来了
{
break;
//cout<<ans<<endl;
//return ;
}
}
cout<<ans<<endl;
}
int main()
{
while(cin>>n)
{
if(n==0) break;
for(int i=0;i<n*(n-1)/2;i++) cin>>edge[i].u>>edge[i].v>>edge[i].w;//输入边
sort(edge,edge+(n*(n-1)/2),cmp);//从小到大排序
Kruskal();
}
}
还是畅通工程(prim和kruskal)的更多相关文章
- hdu 1233 还是畅通工程 (prim, kruskal)
还是畅通工程Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDU 1879 继续畅通工程 (Prim(普里姆算法)+Kruskal(克鲁斯卡尔))
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU-1233 还是畅通工程 (prim 算法求最小生成树)
prim 算法求最小生成树 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- hdu 1863 畅通工程 (prim)
畅通工程Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 还是畅通工程,最小生成树kruskal
题目描述: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可 ...
- 畅通工程再续 (kruskal算法的延续)
个人心得:这题其实跟上一题没什么区别,自己想办法把坐标啥的都给转换为对应的图形模样就好了 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实 ...
- hdoj1879 继续畅通工程(Prime || Kruskal)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1879 思路 这题和hdoj1102很像,图中的有一些路已经修好了,对于这些已经修好的路,我们令还需要修 ...
- hdoj1863 畅通工程(Prime || Kruskal)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1863 思路 最小生成树问题,使用Prime算法或者Kruskal算法解决.这题在hdoj1233的基础 ...
- hdoj1233 还是畅通工程(Prime || Kruskal)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1233 思路 最小生成树问题,使用Prime算法或者Kruskal算法解决. 代码 Prime算法: # ...
- HDU 1879 继续畅通工程(Prim||Kruscal模板题)
原题链接 Prim(点归并) //异或运算:相同为假,不同为真 #include<cstdio> #include<algorithm> #define maxn 105 us ...
随机推荐
- boost::python的使用
boost::python库是pyhon和c++相互交互的框架,可以再python中调用c++的类和方法,也可以让c++调用python的类和方法 python自身提供了一个Python/C AP ...
- 《Head First Servlets & JSP》-6-会话管理-listener etc. demo
工程结构 上下文参数示例 示例程序展示了如何从上下文读取参数,并在上下文监听器中生成属性对象和在上下文中设置属性. 建立一个简单的JavaBean对象作为属性:Dog.java package com ...
- [转载]应用 Valgrind 发现 Linux 程序的内存问题
应用 Valgrind 发现 Linux 程序的内存问题 如何定位应用程序开发中的内存问题,一直是 inux 应用程序开发中的瓶颈所在.有一款非常优秀的 linux 下开源的内存问题检测工具:valg ...
- Mac 使用 NFS 连接 Centos 上的共享文件夹
Mac 使用 NFS 连接 Centos 上的共享文件夹 NFS介绍 网络文件系统(Network File System,NFS),一种使用于分散式文件系统的协议,由升阳公司开发,于1984年向外公 ...
- android studio中使用x5 webview来读写cookies的问题
本人新手,刚接触AS也没有多久,记录下两个问题. 1. 怎么在android studio中写入cookies 把写入cookies的动作放在了主界面的onCreate事件中了,看了腾讯的说明,说是要 ...
- vmware vmware esxi5.x安装方法及解决错误
vmware Esxi5.x安装指南 vmware Esxi5文档中心官网地址: http://pubs.vmware.com/vsphere-55/index.jsp?topic=%2Fcom.vm ...
- IDEA使用maven创建SSM及其依赖的导入
$.说明: 1.IDEA创建maven SSM web项目 2.导入依赖 一.IDEA创建maven SSM项目 对于初入IDEA的人来说此篇博客适用于不会创建maven 项目的人 首先下载IDEA ...
- CHUI类
自定义控件程序运行流程 setNeedsLayOut和setNeedsDisplay区别 masonry使用技巧 1.普通展示 UILabel UIView UI控件的位置 U ...
- 斐波那契数列的Python实现
斐波那契数列的Python实现:递归实现.非递归实现.斐波那契数列生成器: \[ \begin{equation} F(n)= \begin{cases} n & n=0, 1\\ F(n ...
- 转载 javaweb三大框架和MVC设计模式 (自己加拉些内容)
javaweb三大框架和MVC设计模式 一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基 ...