kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题)
kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题)
总题单 week 3 [kuangbin带你飞] 题单 最小生成树 + 线段树 Click here ~~
https://blog.csdn.net/m0_46272108/article/details/108980362
Description
想用路由器把N个地方连接起来,给定N个路由器安装点,接下来的N个数字表示在某地安装一个路由器的费用。再接下来N*N的矩阵表示两地进行连接时的花费。每个路由器只能用一次,例如在AB之间连接了,就需要分别在A和B购买一个路由器,然后再把他们连起来,然后再想在AC之间连接,A就必须要再买一个路由器,不能重复使用同一个路由器,求他们的最小花费
Input
T组输入。输入N代表需要N地互联,下面一行有N个数字,代表在第i个地方安装一个路由器的费用。下面N行为一个矩阵,代表第i个地方到第j个地方连接起来所需费用。 保证所有数字不超过1000。
Output
每组输出一个结果
Sample Input
1
3
10 20 30
0 100 200
100 0 300
200 300 0
Sample Output
370
理解 朴素Prim算法 即可 (代码有详细解释)
关于朴素Prim算法,可以查看这篇文章(内有模板题及图文详解):
图论 —— 最小生成树(朴素Prim原理及模板题) https://blog.csdn.net/m0_46272108/article/details/108929358
注意输入输出!!!!
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define ll long long
//#define int ll
#define inf 0x3f3f3f3f
using namespace std;
int read()
{int w = 1, s = 0;char ch = getchar();while (ch < '0' || ch>'9') { if (ch == '-') w = -1; ch = getchar(); }while (ch >= '0' && ch <= '9') { s = s * 10 + ch - '0'; ch = getchar(); }return s * w;
}
//最大公约数
int gcd (int x,int y) {if(x<y) swap(x,y);//很多人会遗忘,大数在前小数在后//递归终止条件千万不要漏了,辗转相除法return x % y ? gcd(y, x % y) : y;
}
//计算x和y的最小公倍数
int lcm (int x,int y) {return x * y / gcd(x, y);//使用公式
}
//------------------------ 以上是我常用模板与刷题几乎无关 ------------------------//
const int N = 1010;
int g[N][N];//边的权值
int st[N];
int dist[N];
int num[N];//点的权值
int k;//数据组数
int n;//图结点的数量int Prim()
{//存最小生成树里面所有长度之和int res = 0;for(int i = 1; i < n; i++) {//找到集合外,距离最短的点int minn = inf;int t;for(int j = 1; j <= n; ++j) {//在集合外if (!st[j] && minn > dist[j]) {minn = dist[j];t = j;}}res += dist[t];//将点加到树里面去。st[t] = true;/* 这里要先更新再累加,不然会出现自环问题,最小生成树是不存在环的。*///用t更新一下,其他点到 集合 的距离for (int j = 1; j <= n; ++j) {dist[j] = min(dist[j], g[t][j]);}}return res;
}
int main()
{scanf("%d",&k);while(k--){//图结点的数量n = read();//点的权值for (int i = 1; i <= n; ++i) {scanf("%d", &num[i]);}for (int i = 1; i <= n; ++i) {for (int j = 1; j <= n; ++j) {g[i][j] = read();g[i][j] += num[i] + num[j];}}memset(st, false, sizeof st);//将1放进生成树st[1] = true;for (int i = 1; i <= n; ++i) {dist[i] = g[i][1];}printf("%d\n", Prim());}return 0;
}
kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题)相关推荐
- ZOJ 1586 QS Network
题目链接 QS Network Time Limit: 2 Seconds Memory Limit: 65536 KB Sunny Cup 2003 - Preliminary Round ...
- 贪婪算法在求解最小生成树中的应用(JAVA)--Prim算法
贪婪算法:通过一系列步骤来构造问题的解,每一步对目前构造的部分分解做一个拓展,直到获得问题的完整解为止,而算法的核心思想就在于,算法的每一步都必须满足以下条件:可行(满足问题的约束条件).局部最优(当 ...
- (kuangbin带你飞--最短路径)MPI Maelstrom(dijstra模板题)
原题目: BIT has recently taken delivery of their new supercomputer, a 32 processor Apollo Odyssey distr ...
- 最小生成树-prim算法模板
题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz 输入输出格式 输入格式: 第一行包含两个整数N.M,表示该图共有N个结点和M条无向边.(N<=5000,M<= ...
- 最小生成树prim算法———模板
codevs.cn 最优布线问题 #include<cstdio> #include<cstring> bool u[101]; int g[101][101],minn[10 ...
- 【最小生成树专题】POJ 2075 Tangled in Cables
POJ 2075 Tangled in Cables 题目链接->http://poj.org/problem?id=2075 Time Limit: 1000MS Memory Limit ...
- 最小生成树板子-AcWing 858. Prim算法求最小生成树
题目分析 来源:acwing 分析: 给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|. 由 V 中的全部 n 个顶点和 E 中 n−1 ...
- 最小生成树 Kruskal算法 Prim算法
文章目录 Kruskal算法 模板: Prim算法 模板: Kruskal算法 模板: https://blog.csdn.net/Rain722/article/details/65642992 K ...
- * poj 1251 JungleRoad 最小生成树 Kruskal算法、Prim算法
文章目录 Kruskal算法 模板:https://blog.csdn.net/Rain722/article/details/65642992 Prim算法 模板: poj 1251 JungleR ...
最新文章
- win mysql 最大连接_常用的三种修改mysql最大连接数的方法
- jasmine.FunctionMatchers.toHaveBeenCalledWith的单步调试
- Javascript项目
- R爬虫小白入门:Rvest爬链家网+分析(三)
- 加密算法实现数据通讯
- 3dmax、python3、Rational Rose、DTLite、commons-math3、VM12、DreamWeaver、SPSS、sqlserver2008、mySQL等软件安装包最全集合
- 计算机控制环境下审计风险研究,计算机审计风险研究
- maven deploy 时报错-repository element was not specified in the POM inside distributionManagement eleme
- c语言中进入临界区函数,VC/MFC 临界区使用方法事例
- 手动链接react native的依赖
- Excel甘特图 Gantt Chart
- UVa10019:Funny Encryption Method
- 使用Jetcache过程的bug之Buffer underflow
- 运行数据区③---方法区
- 第一天 :二分查找+移除元素
- 大学生网站建设项目实施策划书
- adobe acrobat pro dc 无法打开PDF_PDF编辑Acrobat Pro软件教程 Acrobat XI Pro 全面技能标准培训视频...
- 什么是产品运营?文中这个举例感觉让我思路明朗了许多
- 论文阅读《How Does Knowledge Graph Embedding Extrapolate to Unseen Data: A Semantic Evidence View》
- 计算机vf中rest是什么意思,vf常用命令(全)