【待修改】nyoj 38 最小生成树
package nyoj;
import java.util.Scanner;
public class Main {
public static void main(String args[])
{
//System.out.println(Integer.MAX_VALUE);
Scanner scn=new Scanner(System.in);
int len=scn.nextInt();
while(len-->0)
{
int v=scn.nextInt();
int e=scn.nextInt();
boolean visit[]=new boolean[v+1];//点是否被访问
int map[][]=new int[v+1][v+1];//两个点之间的距离
int low[]=new int[v+1];
//读入map
//初始化数组为无情大
for(int i=1;i<v+1;i++)
{
for(int j=1;j<v+1;j++)
{
map[i][j]=Integer.MAX_VALUE;
if(i==j)map[i][i]=0;
}
}
for(int i=0;i<e;i++)
{
int x=scn.nextInt();
int y=scn.nextInt();
map[x][y]=map[y][x]=scn.nextInt();
}
int ans=prime(map,v,e);
System.out.println(ans);
int start=scn.nextInt();
for(int i=1;i<v;i++)
{
int tem=scn.nextInt();
if(tem<start)start=tem;
}
//System.out.println(ans+start);
}
}
private static int prime(int[][] map,int v,int e) {
// TODO Auto-generated method stub
boolean visit[]=new boolean[v+1];//点是否被访问
int low[]=new int[v+1];
visit[1]=true;
int ans=0;
//初始化low,就是集合到他的距离
for(int i=1;i<=v;i++)
{
if(!visit[i])
{
low[i]=map[1][i];
}
}
//不断的加点,每次加一个,共加v-1次
for(int i=2;i<=v;i++)
{
//在非访问节点中选择最low的点
int k = 0;
int min=1<<31-1;
for(int j=1;j<=v;j++)
{
if(!visit[j]&&low[j]<min) min=low[k=j];
}
ans+=min;//选中最小的边
//选中k个节点
visit[k]=true;
//更新以k开头的点
for(i=1;i<v+1;i++)
{
if(!visit[i]&&map[k][i]<low[i])
{
low[i]=map[k][i];
}
}
}
return ans;
}
}
【待修改】nyoj 38 最小生成树的更多相关文章
- nyoj 38 布线问题
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=38 最小生成树水题~ 代码: #include "stdio.h" / ...
- NYOJ 38 布线问题 (最小生成树 prim)
题目链接 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件: 1.把所有的楼都供上电. 2.所用电线花费最少 输入 第一行是一个整数n表示有n组测 ...
- nyoj 38 简单并查集的应用&最小生成树
#include<stdio.h> #include<stdlib.h> #define inf 0x3fffffff #define N 600 struct node { ...
- NYOJ 38布线问题
http://acm.nyist.net/JudgeOnline/problem.php?pid=38 布线问题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南阳 ...
- 待修改 nyoj 412 又是一个遗留问题
测试的数据都正确啊,跟别人正确代码也对比了一下,一直wrong ans,这道题是搞不定了,思路是这样的,一个int 的数, 例如 一个数的二进制是1001100,那么大于这个数的最小的有相同个数1的数 ...
- NYOJ 38 布线问题_(解法2 Prim算法)
时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 南阳理工学院要进行用电线路改造.如今校长要求设计师设计出一种布线方式.该布线方式须要满足下面条件: 1.把全部的楼都供 ...
- nyoj 38 布线问题 Kruskal and Prim
布线问题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件: 1.把所有的 ...
- NYOJ 38 布线问题_(解法1 Kruskal算法)
时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 南阳理工学院要进行用电线路改造.如今校长要求设计师设计出一种布线方式,该布线方式须要满足下面条件: 1.把全部的楼都供 ...
- 最小生成树之kruskal方法实现 (java)
今天是个阴天,下了点雨,work ......... 步骤:将所有边排序,然后不断从小到大加上边,这个过程最重要的是避免环的产生,此处用并查集.(nyoj 38) package 最小生成树; imp ...
随机推荐
- Cassandra1.2文档学习(8)—— 数据管理
数据参考:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_manage ...
- 解决php json_encode 出现的中文转码、乱码问题
// 防止json中文转码 function jsonEncodeWithCN($data) { return preg_replace("/\\\u([0-9a-f]{4})/ie&quo ...
- stream的Read、Write方法实例
, bytes.Length)) > ) , readBytes-);//8为偏移量,10为数量 } } ...
- python 脚本
mag3.py 1,import import sys from org.eclipse.jface.dialogs import MessageDialogfrom org.eclipse.core ...
- “0x5003eaed” 指令引用的“0x00000000”内存。该内存不能为“read”
一.问题描述与原因分析 1.问题描述 使用VC6.0,在工具栏点击“打开文件”或者“添加文件到项目”的图标时,提示如题的错误. 2.原因分析 微软的VC6.0与office2007冲突问题. 二.解决 ...
- 用Cocos2d-x实现2D光线效果
2015.3.23优化修改,现在已经能达到稳定60帧了.. 本博客地址:http://www.cnblogs.com/wolfred7464/ 创意来自于:http://ncase.me/sight- ...
- 【BZOJ1823】 [JSOI2010]满汉全席
Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而 ...
- matlab vs python
(参考)从下图可以清晰看到matlab和python之间的区别 Python是一种编程语言,但与其他变成语言的不同在于:python具有许多的扩展库(通过import引入) Matlab是集合计算环境 ...
- UVA 12647 Balloon
这是一个线段树的题目: 我记得一个月前在cf上也做过一个类似的题目: #include<cstdio> #include<cstring> #include<algori ...
- KXFW界面库
如果你看到这里,觉得这个UI库不错,那请你一定要记住如下这些话.这个开源已经有更好的替代者,那就是QML,无法否认QML会有一些性能或BUG的问题,但也无法否定它的实现机制是非常棒的,你完全可以利用它 ...