HDU 1223 还是畅通过程【最小生成树模板】
还是畅通工程
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 53939 Accepted Submission(s): 24482
当N为0时,输入结束,该用例不被处理。
Hint
Huge input, scanf is recommended.
#include<bits/stdc++.h> using namespace std; #define N 505
#define inf 99999999 int e[N][N], dis[N], v[N]; int main()
{
int n, m, Min, t1, t2, t3, j, pos; //输入点数、边数
while(scanf("%d", &n), n) {
memset(v,,sizeof(v));
memset(dis,,sizeof(dis));
int cnt = , sum = ; //点数、路径权值和
m = n * (n-) / ;
//初始化图
for(int i=; i<=n; i++){
for(int j=; j<=n; j++){
if(i == j) e[i][j] = ;
else e[i][j] = inf;
}
} //无向图建边
for(int i=; i<=m; i++){
scanf("%d %d %d",&t1, &t2, &t3);
e[t1][t2] = t3;
e[t2][t1] = t3;
} //初始化dis数组,1号顶点到各个顶点初始距离
for(int i=; i<=n; i++)
dis[i] = e[][i]; v[] = ; //第一个结点访问了 for(int i=; i<n; i++){
Min = inf;
for(int j=; j<=n; j++){
if(v[j]== && dis[j] < Min){ //找出最小距离的节点
Min = dis[pos = j];
}
} v[pos] = ;
sum += Min; for(int j= ;j<=n; j++){
if(v[j]==)
dis[j] = min(dis[j],e[pos][j]);
}
}
printf("%d\n",sum); //选出n-1条边,使得边的总长度之和最短
}
return ;
}
prim-280MS
HDU 1223 还是畅通过程【最小生成树模板】的更多相关文章
- HDU 1223 还是畅通工程(最小生成树prim模板)
一个很简单的prim模板,但虽然是模板,但也是最基础的,也要脱离模板熟练打出来 后期会更新kruskal写法 #include<iostream> #include<cstdio&g ...
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
还是畅通工程 Time Limit: 4000/2 ...
- HDU 1233 还是畅通工程(模板——克鲁斯卡尔算法)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 题意描述: 输入n个城镇以及n*(n-1)/2条道路信息 计算并输出将所有城镇连通或者间接连通 ...
- hdu 1879 继续畅通工程 (最小生成树)
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 1233 还是畅通工程 (最小生成树)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- (step6.1.5)hdu 1233(还是畅通工程——最小生成树)
题目大意:输入一个整数n,表示有n个村庄,在接下来的n*(n-1)/2中,每行有3个整数beigin.end.weight,分别表示路的起始村庄,结束村庄和村庄之间的距离. 求索要修的路的最短距离 解 ...
- (step6.1.1)hdu 1879(继续畅通工程——最小生成树、kruscal)
题目大意:输入一个整数n,表示有n个村庄.在接下来的n(n-1)/2行中,每行有4个整数begin end weight flag.分别表示从begin到end之间可以连通 ,他们之间的费用为w ...
- HDU 1233.还是畅通工程-最小生成树(Prime)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU 1233 还是畅通工程(最小生成树,prim)
题意:中文题目 思路:prim实现,因为有n*(n-1)/2条边,已经是饱和的边了,prim比较合适. (1)将点1置为浏览过,点1可以到达其他每个点,所以用low[i]数组记录下目前到达i点的最小长 ...
随机推荐
- hive操作语句
设置属性: //设置本地执行作set hive.exec.mode.local.auto=true; //设置动态分区 set hive.exec.dynamic.partition=true; se ...
- easyui的layout
1.浏览器自适应(即浏览器改变大小,里面的表格大小也会随之改变)要设置两个参数 (1)一般都要在body上设置class=“easyui-layout”: <body class="e ...
- [网站公告]11月26日00:00-04:00阿里云RDS升级
大家好,11月26号00:00-04:00(今天夜里),阿里云将对我们所用的SQL Server RDS实例所在的物理主机做升级操作(目前博客园整站运行于阿里云上),升级期间RDS实例会有2次闪断,每 ...
- html调用commonjs规范的js
a.js define(function(require, exports, module) { var test = function(){ console.log("hello worl ...
- leetcode 【 Subsets II 】python 实现
题目: Given a collection of integers that might contain duplicates, S, return all possible subsets. No ...
- C# 引用访问权限
同样代码表现的不同行为 创建基类(Super)和派生类(Sub)每个类有一个字段field和一个公共方法getField,并且使用内联的方式初始化为1,方法getField返回字段field.C#和J ...
- CentOS安装jdk和tomcat
1.查看是否已经安装 java -version 2.卸载自带的openjdk dnf remove java-1.7.0-openjdk 3.下载jdk安装包 wget -c http://111. ...
- 利用python列表实现堆栈和队列
堆栈: 堆栈是一个后进先出的数据结构,其工作方式就像生活中常见到的直梯,先进去的人肯定是最后出. 我们可以设置一个类,用列表来存放栈中的元素的信息,利用列表的append()和pop()方法可以实现栈 ...
- sql 使用存储过程传递列名或表名作为参数
原网址: http://www.cnblogs.com/85538649/archive/2011/09/23/2186155.html alter procedure Proc_UpdateDate ...
- 二分 by zzt
#include <bits/stdc++.h> using namespace std; /* Problem description: There is an array A, the ...