数据结构实验之图论六:村村通公路【Prim算法】(SDUT 3362)
题解:选点,选最小权的边,更新点权。可以手动自行找一遍怎么找到这个最小的生成树,随便选一个点放入我们选的集合中,然后看和这个点相连的点中,与那个点相连的那条边权值是最小的,选择之后,把相连的这个点一起放入集合中,这样的话集合中就多了一点,现在要找和这两个点都相连的点中,那个边的权最小,直到全部的点都在集合中就完成了。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int inf = 0x3fffff;
int gra[1005][1005];
int vis[1005];
int dist[1005];
void prim(int n)
{
    memset(vis,0,sizeof(vis));
    for(int i = 0; i <= n; i ++) dist[i] = gra[1][i];
    int Min = inf, v, flag = 1;
    for(int i = 1; i <= n; i ++)
    {
        Min = inf;
        for(int j = 1; j <= n; j ++)
        {
            if(!vis[j] && dist[j] < Min){
                Min = dist[j];
                v = j;
            }
        }
        if(Min == inf) {flag = 0;break;}
        vis[v] = 1;
        for(int j = 1; j <= n; j ++)
        {
            if(!vis[j] && dist[j] > gra[v][j]){
                dist[j] = gra[v][j];
            }
        }
    }
    int ans = 0;
    for(int i = 1; i <= n;i ++)
    {
        ans += dist[i];
    }
    if(flag)printf("%d\n",ans);
    else printf("-1\n");
}
int main()
{
    int n,m,u,v,w;
    while(~scanf("%d%d",&n,&m)){
        for(int i = 0; i<= n; i ++)
        {
            for(int j = 0; j <= n; j ++)
            {
                if(i == j) gra[i][j] = 0;
                else gra[i][j] = inf;
            }
        }
        for(int i = 0; i < m; i ++)
        {
            scanf("%d%d%d",&u,&v,&w);
            gra[u][v] = gra[v][u] = w;
        }
        prim(n);
    }
    return 0;
}
												
											数据结构实验之图论六:村村通公路【Prim算法】(SDUT 3362)的更多相关文章
- SDUT 3362 数据结构实验之图论六:村村通公路
		
数据结构实验之图论六:村村通公路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 当前农村公 ...
 - SDUT OJ 数据结构实验之图论六:村村通公路(最小生成树)
		
数据结构实验之图论六:村村通公路 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...
 - SDUT-3362_村村通公路
		
数据结构实验之图论六:村村通公路 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 当前农村公路建设正如火如荼的展开,某乡 ...
 - 数据结构实验之图论七:驴友计划 ( 最短路径   Dijkstra 算法 )
		
数据结构实验之图论七:驴友计划 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...
 - SDUT 3363 数据结构实验之图论七:驴友计划
		
数据结构实验之图论七:驴友计划 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 做为一个资深 ...
 - SDUT 3345 数据结构实验之二叉树六:哈夫曼编码
		
数据结构实验之二叉树六:哈夫曼编码 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 字符的编 ...
 - SDUT OJ 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
		
数据结构实验之图论十:判断给定图是否存在合法拓扑序列 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Prob ...
 - SDUT OJ 数据结构实验之图论八:欧拉回路
		
数据结构实验之图论八:欧拉回路 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
 - SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
		
数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...
 
随机推荐
- Nokia5130不能上网
			
说明 我是一个挺怀旧的人,一直想入手一个好几年前买的Nokia5130. 于是昨天在淘宝上买了一个,花了我一百多.不过早就停产了,买到的自然是翻新机. 收到货的时候,看似一切美好,但是下载了个uc的j ...
 - windows + Eclipse
			
https://www.eclipse.org/downloads/index-packages.php 下载好后是一个压缩文件,解压并放到相要存放软件的目录,双击打开解压后的目录下eclipse.e ...
 - 线程一(lock)
			
对于线程同步操作最简单的一种方式就是使用 lock 关键字,通过 lock 关键字能保证加锁的线程只有在执行完成后才能执行其他线程. lock 的语法形式如下. lock(object) { ...
 - css 边框上如何写入文字?
			
方法一: 1.首先,打开html编辑器,新建html文件,例如:index.html. 2.在index.html中的<body>标签中,输入html代码:. <div style= ...
 - layui表单
			
{include file="Public:inner_header" /} <link rel="stylesheet" href="__ST ...
 - awk初级教程
			
参考:sed & awk 概述 sed & awk指令组成 与sed区别 尽管awk指令与sed指令的结构相同,都由模式和过程两部分组成,但过程本身有很大不同. awk看上去不像编辑器 ...
 - Django drf:手撸自定义跨域
			
项目需求: 1.用域名8000向8001发送请求,用django框架解决跨域问题 2.用上自定义中间件配置,支持get.post.put.detele和非简单请求 3.支持版本控制 4.在settin ...
 - Chkdsk /f  修复无法识别EXFAT卷文件系统
			
Chkdsk 工具将错误地报告为损坏的 Windows 7 和 Windows Server 2008 R2 中 exFAT 卷文件系统 适用于: Windows Server 2008 R2 Ser ...
 - JAVA 使用原生jdbc批量添加,表被锁住问题
			
今天用jdbc批量添加数据的时候遇到了一个问题,当数据添加成功过后,再想对该表进行操作发现表被锁住了,检查了下代码发现事务提交了呀!!!!!!!!!!!! 去网上查了大半天的资料才发现问题,在conn ...
 - cuda环境搭建
			
cuda环境搭建 cuda 的安装 一篇很不错的博客 https://blog.csdn.net/u014529295/article/details/78766258 另外官网也有介绍 https: ...