Prim && Kruskal
Prim
#include<iostream>
#include<cstring>
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = ;
int n, k;
int dis[N], ct[N][N], vis[N]; int Prim()
{
int ans = ;
memset(vis, , sizeof(vis));
/*
for(int i = 1; i <= n; i++)
dis[i] = ct[1][i];
vis[1] = 1;
*/
while()
{
int v = -;
for(int i = ; i <= n; i++)
{
if(!vis[i] && (v == -||dis[v]>dis[i])) v = i;
}
if(v == -) break;
ans += dis[v];
vis[v] = ;
for(int i = ; i <= n; i++)
if(!vis[i])
dis[i] = min(dis[i], ct[v][i]);
}
return ans;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
cout.tie();
cin >> n >> k;
memset(dis, INF, sizeof(dis));
int tmp;
while(k--)
{
cin >> tmp;
dis[tmp] = ;
}
for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)
cin >> ct[i][j];
cout << Prim() << endl;
return ;
}
Kruskal
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = ;
struct node
{
int l, r, c;
bool operator < (const node & x)
{
return c < x.c;
}
}A[N*N];
int pre[N];
int Find(int x)
{
if(x == pre[x]) return x;
return pre[x] = Find(pre[x]);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
cout.tie();
int n, m;
cin >> n >> m;
for(int i = ; i <= n; i++)
pre[i] = i;
int t, tmp;
cin >> t;
m--;
while(m--)
{
cin >> tmp;
t = Find(t);
tmp = Find(tmp);
pre[tmp] = t;
}
int cnt = ;
for(int i = ; i <= n; i++)
{
for(int j = ; j <= n; j++)
{
cin >> tmp;
if(i <= j) continue;
A[cnt].l = i, A[cnt].r = j, A[cnt++].c = tmp;
}
}
int ans = ;
sort(A, A+cnt);
for(int i = ; i < cnt; i++)
{
int x =A[i].l, y = A[i].r, ct = A[i].c;
x = Find(x), y = Find(y);
if(x == y) continue;
pre[y] = x;
ans += ct;
}
cout << ans << endl;
return ;
}
Prim && Kruskal的更多相关文章
- 最小生成树(prim&kruskal)
最近都是图,为了防止几次记不住,先把自己理解的写下来,有问题继续改.先把算法过程记下来: prime算法: 原始的加权连通图——————D被选作起点,选与之相连的权值 ...
- 最小生成树详解 prim+ kruskal代码模板
最小生成树概念: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里 ...
- 最小生成树 Prim Kruskal
layout: post title: 最小生成树 Prim Kruskal date: 2017-04-29 tag: 数据结构和算法 --- 目录 TOC {:toc} 最小生成树Minimum ...
- 最小生成树算法详解(prim+kruskal)
最小生成树概念: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里 ...
- POJ 1258 Agri-Net(最小生成树 Prim+Kruskal)
题目链接: 传送门 Agri-Net Time Limit: 1000MS Memory Limit: 10000K Description Farmer John has been elec ...
- 邻接矩阵c源码(构造邻接矩阵,深度优先遍历,广度优先遍历,最小生成树prim,kruskal算法)
matrix.c #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include < ...
- 最小生成树算法(Prim,Kruskal)
边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权. 最小生成树(MST):权值最小的生成树. 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路.可以 ...
- 数据结构学习笔记05图(最小生成树 Prim Kruskal)
最小生成树Minimum Spanning Tree 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 树: 无回路 |V|个顶 ...
- POJ 1258 Agri-Net (Prim&Kruskal)
题意:FJ想连接光纤在各个农场以便网络普及,现给出一些连接关系(给出邻接矩阵),从中选出部分边,使得整个图连通.求边的最小总花费. 思路:裸的最小生成树,本题为稠密图,Prim算法求最小生成树更优,复 ...
- UVA 10462 Is There A Second Way Left?(次小生成树&Prim&Kruskal)题解
思路: Prim: 这道题目中有重边 Prim可以先加一个sec数组来保存重边的次小边,这样不会影响到最小生成树,在算次小生成树时要同时判断次小边(不需判断是否在MST中) Kruskal: Krus ...
随机推荐
- 入门MySQL——架构篇
前言: 上篇文章我们介绍了入门MySQL的基本概念,看完上篇文章,相信你应该了解MySQL的前世今生了吧.本篇文章将带你从架构体系来学习MySQL.我认为学习MySQL架构体系应该是入门阶段必须的, ...
- 云计算网络基础笔记及VLAN交换机配置
- maven的编译规范
maven的中央仓库上的jar的包名必须小写.否则maven编译不通过. 如:Memcached-Java-Client-3.0.2 的jar包. 目录如下: com.whalin.memcached ...
- powermockito单元测试之深入实践
概述 由于最近工作需要, 在项目中要做单元测试, 以达到指定的测试用例覆盖率指标.项目中我们引入的powermockito来编写测试用例, JaCoCo来监控单元测试覆盖率.关于框架的选择, 网上讨论 ...
- java 各基本类型转 bytes 数组
java 将 基本类型转byte[] 数组时,需考虑大端小端问题 1. 大端格式下,基本类型与byte[]互转 BigByteUtil.java package com.ysq.util; impor ...
- SpringBoot中读取配置文件的几种方式
1.读取application文件 在application.yml或者properties文件中添加: info: name: xiaoming age: 13 sex: 1 读取方式如下: imp ...
- 从零开发一款自己的小程序UI组件库(二)
写在前面:从零开发一款自己的小程序UI组件库(一) 上节我们讲到初始化组件库模板.模板文件概述.模板上传npm以及npm包文件下载至本地并运用到项目.这节我们继续,内容主要有基础UI组件库的搭建(bu ...
- cookie session sessionStorage localStorage
什么是会话? 会话指的是浏览器与服务器之间的数据交互.所白了就是 浏览器和服务器进行的请求和响应. http协议是无状态的,多次请求之间没有关联性 cookie和session的作用?干啥的? 利用c ...
- 7.4 元组tuple类型内置方法
元组tuple 元组相当于不可变的列表,在定义完成后后面就不可以进行更改,因此元组只可取不可存 因为不可变,所以相对列表来说,他的功能也少了很多,所以,不难理解,他有个优点就是占用内存小. 作用:能够 ...
- vim 基础配置
最近在使用 python 搞服务, 简单配置了一个 vim, 配置了自动补全以及背景色 .(ps:搜狗输入法快捷键占用真是太坑爹,改用谷歌输入法,世界安静了) 具体配置如下: 一. 安装插件 1.克隆 ...