还是畅通工程(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 ...
随机推荐
- CLRInjection - 通用托管注入(超级灰色按钮克星升级版)
通用托管注入 - CLRInjection CLR软件系列第二发: 通用托管注入 - CLRInjection 软件简介:这款软件可以将任意托管DLL用插件的形式,注入到正在运行中的.net托管程序集 ...
- Mybatis避免出现语法错
在使用MyBatis的时候,可能会看起来没有问题,但是代码运行的时候出现意想不到的错误. 看如下代码: <update id="updateByPrimaryKeySelective& ...
- SDUT 2498 AOE网上的关键路径
AOE网上的关键路径 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 一个无环的有向图称为无 ...
- c# get set 理解
- angular 分页2
http://www.alliedjeep.com/2547.htm AngularJS Code (Users.js) var Users = angular.module('Users', []) ...
- signalR之java client的websocket BUG处理
最近在用SignalR,服务端已经写好(老铁,没毛病,很稳),然后有坑的是我还得写App端,那就撸吧,java也不是什么很难的东西.奈何坑多(已经踩了一波android的控件bug),这次遇到了MS的 ...
- Java编程思想读书笔记之一切皆对象
一切皆对象 Java程序运行时,数据保存到哪里 寄存器 这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配.我们对此没 ...
- eclise远程调试
配置很简单,如下: 1. tomcat在bin/catalina.sh中添加如下:declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -D ...
- CentOS下安装配置SVN服务器并自动同步到web目录
一.安装 yum install subversion测试是否安装成功 /usr/bin/svnserve --version如提示以下内容,说明已安装成功 svnserve,版本 1.6.11 (r ...
- foreach循环遍历 行合并
<%@ page contentType="text/html;charset=UTF-8" %> <%@ include file="/WEB-INF ...