HDU1233 还是畅通工程【最小生成树】
题意:
求出连接各个村庄最小的公路总长度,把最小公路总长度求出来。
思路:
最小生成树原理,带入数据求得。
代码:
prim:
#include<iostream>
#include<cstring> using namespace std;
#define inf 0x3f3f3f3f int main()
{
int n, i,j,b,c,d,min,a[][],visit[],low[];
while(cin>>n,n)
{
memset(visit,,sizeof(visit));
int temp=n*(n-)/;
while(temp--)
{
cin>>b>>c>>d;
a[b][c]=a[c][b]=d;
}
visit[]=;int pos=; //第一次给low赋值
for(i=;i<=n;++i)
{
if(i!=pos) low[i]=a[pos][i];
}
int result=; //运行m-1次,因为至少需要m-1次才能把所有的城市连通
for(i=;i<n;++i)
{
min=inf;
for(j=;j<=n;++j)
{
if(!visit[j]&&min>low[j])
{
min=low[j];
pos=j;
}
}
result+=min;
visit[pos]=;
for(j=;j<=n;++j)
{
if(!visit[j]&&low[j]>a[pos][j])
{
low[j]=a[pos][j];
}
}
}
cout<<result<<endl;
}
return ;
}
krusual:
#include<iostream>
#include<cstdio>
#include<algorithm> using namespace std; struct node
{
int u,v,w;
}; node arr[];
int per[],n; bool cmp(node a,node b)
{
return a.w<b.w;
} void init()
{
for(int i=;i<=n;++i)
{
per[i]=i;
}
} int find(int x)
{
if(x==per[x]) return x;
return per[x]=find(per[x]);
} bool join(int x,int y)
{
int fx=find(x);
int fy=find(y);
if(fx!=fy)
{
per[fx]=fy;
return ;
}
return ;
} int main()
{
int m;
while(cin>>n,n)
{
init();
m=n*(n-)/;
for(int i=;i<m;++i)
{
cin>>arr[i].u>>arr[i].v>>arr[i].w;
}
sort(arr,arr+m,cmp);
int sum=;
for(int i=;i<m;++i)
{
if(join(arr[i].u,arr[i].v))
{
sum+=arr[i].w;
}
}
cout<<sum<<endl;
}
return ;
}
HDU1233 还是畅通工程【最小生成树】的更多相关文章
- hdu1233 还是畅通工程 最小生成树
给出修建边的边权,求连通所有点的最小花费 最小生成树裸题 #include<stdio.h> #include<string.h> #include<algorithm& ...
- HDU-1233 还是畅通工程 (prim 算法求最小生成树)
prim 算法求最小生成树 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- hdu1233 继续畅通工程 (最小生成树——并查集)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 最小生成树: HDU1233还是畅通工程
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- HDU1233 还是畅通工程 2017-04-12 19:49 64人阅读 评论(0) 收藏
还是畅通工程 Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- hdu 1879 继续畅通工程 (最小生成树)
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU1863 畅通工程---(最小生成树)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
还是畅通工程 Time Limit: 4000/2 ...
- HDU1233 还是畅通工程
题目: Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连 ...
- HDU-1233 还是畅通工程
Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能 ...
随机推荐
- python之tkinter使用-滚动条
# GUI:tkinter使用 # 通过调节滚动条改变标签中字体大小 import tkinter as tk def resize(ev=None): '''改变label字体大小''' label ...
- Lodop设置文本项行间距、字间距
LODOP给文本项ADD_PRINT_TEXT设置字间距.行间距,可以在打印设计页面,右键属性里设置,然后在打印设计生成代码,也可以直接写代码.LineSpacing行间距.LetterSpacing ...
- Bootstrap缩略图
前面的话 缩略图在网站中最常用的地方就是产品列表页面,一行显示几张图片,有的在图片底部(左侧或右侧)带有标题.描述等信息.Bootstrap框架将这一部独立成一个模块组件,本文将详细介绍Bootstr ...
- BZOJ4551[Tjoi2016&Heoi2016]树——dfs序+线段树/树链剖分+线段树
题目描述 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均 ...
- BZOJ3282Tree——LCT
题目描述 给定N个点以及每个点的权值,要你处理接下来的M个操作. 操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和. 保证x到y ...
- BZOJ5018[Snoi2017]英雄联盟——DP
题目描述 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不 了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤!小皮球只会玩N个英雄,因此,他也只 ...
- Helm使用详解
使用1.helm search 查看charts stable是官方的 local是自己的 2.查看repo helm repo list 3.安装 helm install stable/mysql ...
- intent.setFlags方法中的参数值含义
一. intent.setFlags()方法中的参数值含义: 1.FLAG_ACTIVITY_CLEAR_TOP:例如现在的栈情况为:A B C D .D此时通过intent跳转到B,如果这个int ...
- 关于使用IsapiRewrite重写,重定向的语句
早上起床,发现之前的IsapiRewrite写法有改进的地方, 有几个废弃的网址可以使用IsapiRewrite的重定向,转到新的网址上来. 搞了有十分钟的时间,测试老是不重定向. 因为之前已经有一个 ...
- MySQL服务安装
1.将mysql的安装文件放入服务器里面 2.进行yum源的修改 3.依次安装mysql的5个文件 最后一个server需要的依赖太多,所以用yum进行安装. 或者直接全部用yum进行安装 6.进行m ...