【待修改】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 ...
随机推荐
- find grep
grep grep -rn "hello,world!" * #递归查找当前目录下所有包含hello,world的文件 grep -C number pattern files : ...
- python3 中自带urllib库可下载图片到本地
刚从python3下载图片的语句python2的不太一样,具体python3语句如下: form urllib import request jpg_link = '......' #图片链接 re ...
- Python调试工具-Spyder
OS:Windows 7 关键字:Python IDE, Spyder 1.安装工具pip:https://pip.pypa.io/en/latest/installing.html 下载 get-p ...
- 【原创】一起学C++ 之 字符串 ---------C++ primer plus(第6版)
C++ Primer Plus 第6版 字符串:是存储在内存的连续字节中的一系列字符. C++处理字符串的方式有2种: 一.来自C语言.常被称为C-风格字符串(C-Style-string) 1)从字 ...
- hdu 5510 Bazinga KMP+尺取法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5510 题意:至多50组数据,每组数据至多500个字符串,每个字符串的长度最长为2000.问最大的下标( ...
- Timer组件
1.常用属性 Interval 用于获取或设置Timer组件Tick事件发生的时间间隔,属性值不能小于1 制作左右飘摇窗体 private void timer1_Tick(object sender ...
- EasyUI portal自定义小图标,不是用js方式加载
<script src="~/Scripts/jquery.portal.js"></script> <script> $(function ( ...
- 开发设计模式(六)多例模式(Multition Pattern)
多例模式实际上就是单例模式的扩充,多例模式又划分为有上限多例模式和无上限多例模式两种,有上限多例模式中的多例类的实例是有上限的,当这个多例类中的上限数值上等于 1 时,此时,多例类退化回到了单例类:而 ...
- WiFi与WLAN的区别
很多人到了某一个地方首选要找的就是无线网络,有时候还会问周围的人:这里有WiFi吗?或者说:这里有WLAN吗?那WiFi和WLAN有什么区别呢? 简单来讲,WiFi是无线保真(wireless fid ...
- Datadog Agent是啥?它消耗什么资源?
在资本市场不那么喜人的 2015 年融资 9450 万美元的 Datadog,在运维圈刮起了一阵小旋风.作为国外很值得学习的一款平台监控产品,公司人数不足 100 的 Datadog 为什么吸引了投资 ...