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 最小生成树的更多相关文章

  1. nyoj 38 布线问题

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=38 最小生成树水题~ 代码: #include "stdio.h" / ...

  2. NYOJ 38 布线问题 (最小生成树 prim)

    题目链接 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件: 1.把所有的楼都供上电. 2.所用电线花费最少 输入 第一行是一个整数n表示有n组测 ...

  3. nyoj 38 简单并查集的应用&最小生成树

    #include<stdio.h> #include<stdlib.h> #define inf 0x3fffffff #define N 600 struct node { ...

  4. NYOJ 38布线问题

    http://acm.nyist.net/JudgeOnline/problem.php?pid=38 布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 南阳 ...

  5. 待修改 nyoj 412 又是一个遗留问题

    测试的数据都正确啊,跟别人正确代码也对比了一下,一直wrong ans,这道题是搞不定了,思路是这样的,一个int 的数, 例如 一个数的二进制是1001100,那么大于这个数的最小的有相同个数1的数 ...

  6. NYOJ 38 布线问题_(解法2 Prim算法)

    时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 南阳理工学院要进行用电线路改造.如今校长要求设计师设计出一种布线方式.该布线方式须要满足下面条件: 1.把全部的楼都供 ...

  7. nyoj 38 布线问题 Kruskal and Prim

    布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件: 1.把所有的 ...

  8. NYOJ 38 布线问题_(解法1 Kruskal算法)

    时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 南阳理工学院要进行用电线路改造.如今校长要求设计师设计出一种布线方式,该布线方式须要满足下面条件: 1.把全部的楼都供 ...

  9. 最小生成树之kruskal方法实现 (java)

    今天是个阴天,下了点雨,work ......... 步骤:将所有边排序,然后不断从小到大加上边,这个过程最重要的是避免环的产生,此处用并查集.(nyoj 38) package 最小生成树; imp ...

随机推荐

  1. fsockopen

    fsockopen — 打开一个网络连接或者一个Unix套接字连接 说明 resource fsockopen ( string $hostname [, int $port = -1 [, int  ...

  2. Javascript 5种方法实现过滤删除前后所有空格

    第一种:循环检查替换 //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s ...

  3. 关于移动端和PC端的交互的区别

    对于现在的移动端设备的普及,移动端上的用户体验成了一个重要的关注点. 看了一些网上的关于移动端的交互和用户体验的知识,这里总结了一些.若有不足的地方,希望大家能够积极补充. PC端和移动端的产品的设计 ...

  4. failed with: java.lang.NullPointerException

    failed with: java.lang.NullPointerException 需要在nutch的配置文件 'conf/nutch-site.xml'. 里设置如下,不然就报上面的错误了. 当 ...

  5. word-wrap同word-break的区别(转)

    本文列举了兼容 IE 和 FF 的换行 CSS 推荐样式,详细介绍了word-wrap同word-break的区别. 兼容 IE 和 FF 的换行 CSS 推荐样式 最好的方式是 word-wrap: ...

  6. zepto源码学习-06 touch

    先上菜,看这个模块的最后一段代码,一看就明白. ['swipe', 'swipeLeft', 'swipeRight', 'swipeUp', 'swipeDown', 'doubleTap', 't ...

  7. jquery ashx

    http://www.cnblogs.com/wzcheng/archive/2010/05/20/1739810.html http://www.cnblogs.com/yyl8781697/arc ...

  8. 不改变中间层,如何玩转 .NET 的远程处理功能?

    原文链接: https://msdn.microsoft.com/enus/library/aa289846(v=vs.71).aspx Visual Studio .NET 2003 该方案展示了传 ...

  9. HDU 1160 FatMouse's Speed(DP)

    点我看题目 题意 :给你好多只老鼠的体重和速度,第 i 行代表着第 i 个位置上的老鼠,让你找出体重越大速度越慢的老鼠,先输出个数,再输出位置. 思路 :看题的时候竟然脑子抽风了,看了好久愣是没明白题 ...

  10. HDU4523+简单

    题意很简单. 一次最多多切出一条边! 其余的就没什么好说的了 import java.util.*; import java.math.*; public class Main{ public sta ...