洛谷1546 最短网络Agri-Net【最小生成树】【prim】
【内含最小生成树Prim模板】
题目:https://www.luogu.org/problemnew/show/P1546
题意:给定一个邻接矩阵。求最小生成树。
思路:点少边多用Prim。
Prim其实是把已经在最小生成树里的节点缩成一个,用priorityqueue每次找到距离当前最小生成树距离最小的那条边,加入树中。
- #include<cstdio>
- #include<cstdlib>
- #include<map>
- #include<set>
- #include<cstring>
- #include<algorithm>
- #include<vector>
- #include<cmath>
- #include<stack>
- #include<queue>
- #include<iostream>
- #define inf 0x3f3f3f3f
- using namespace std;
- typedef long long LL;
- typedef pair<int, int> pr;
- int n;
- const int maxn = ;
- int head[maxn], tot = ;
- struct edge{
- int to, nxt, w;
- }e[maxn * maxn];
- void add(int x, int y, int w)
- {
- e[++tot].to = y;
- e[tot].w = w;
- e[tot].nxt = head[x];
- head[x] = tot;
- // e[++tot].to = x;
- // e[tot].w = w;
- // e[tot].nxt = head[y];
- // head[y] = tot;
- }
- int ans = ;
- int d[maxn];
- bool vis[maxn];
- int prim(int s)
- {
- priority_queue<pr, vector<pr>, greater<pr> >que;
- memset(d, 0x3f, sizeof(d));
- int num = ;
- vis[s] = true;
- for(int i = head[s]; i; i = e[i].nxt){
- if(e[i].to != ){
- que.push(make_pair(e[i].w, e[i].to));
- d[e[i].to] = min(d[e[i].to], e[i].w);
- }
- }
- while(!que.empty() && num != n){
- while(!que.empty() && vis[que.top().second])que.pop();
- if(que.empty())break;
- int x = que.top().second;
- vis[x] = true;
- ans += que.top().first;que.pop();
- num++;
- for(int i = head[x]; i; i = e[i].nxt){
- if(!vis[e[i].to] && d[e[i].to] > e[i].w){
- que.push(make_pair(e[i].w, e[i].to));
- d[e[i].to] = e[i].w;
- }
- }
- }
- if(num != n)return -;
- else return ans;
- }
- int main()
- {
- scanf("%d", &n);
- for(int i = ; i <= n; i++){
- for(int j = ; j <= n; j++){
- int w;
- scanf("%d", &w);
- if(i != j){
- add(i, j, w);
- }
- }
- }
- printf("%d\n", prim());
- }
洛谷1546 最短网络Agri-Net【最小生成树】【prim】的更多相关文章
- 洛谷P1546 最短网络 Agri-Net(最小生成树,Kruskal)
洛谷P1546 最短网络 Agri-Net 最小生成树模板题. 直接使用 Kruskal 求解. 复杂度为 \(O(E\log E)\) . #include<stdio.h> #incl ...
- 洛谷 P1546 最短网络 Agri-Net(最小生成树)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P1546 首先不难看出这道题的思想是用了最小生成树,但是这道题有难点: 1.读题读不明白 2.不会读入 ...
- 洛谷 P1546 最短网络 Agri-Net
题目链接 https://www.luogu.org/problemnew/show/P1546 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当 ...
- 洛谷P1546 最短网络 Agri-Net
P1546 最短网络 Agri-Net 526通过 959提交 题目提供者JOHNKRAM 标签图论贪心USACO 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 50分C++代码,求解 请指 ...
- 洛谷——P1546 最短网络 Agri-Net
P1546 最短网络 Agri-Net 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一 ...
- 洛谷 P1546 最短网络 Agri-Net Label:Water最小生成树
题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其 ...
- 洛谷 P1546 最短网络 Agri-Net(最小生成树)
题目链接 https://www.luogu.org/problemnew/show/P1546 说过了不复制内容了 显然是个最小生成树. 解题思路 prim算法 Kruskal算法 prim算法很直 ...
- 洛谷 P1546 最短网络 Agri-Net x
题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其 ...
- 洛谷P1546 最短网络 Agri-Net(Prim堆优化)
#include<bits/stdc++.h> using namespace std; ; const int INF=0x3f3f3f3f; inline void read(int ...
随机推荐
- Word 插入目录的 5 种方法
1. "运用多级编号法"之图文教程 效果图: 步骤: 首先,为了更好的演示,我们先将我们的一级标题全部选中,按住Ctrl键,去一一选择就行了. 选中一级标题后,我们进入「开始」-「 ...
- Spring Boot系列教程十四:Spring boot同时支持HTTP和HTTPS
自签证书 openssl生成服务端证书,不使用CA证书直接生成 -in server.csr -signkey server.key -out server.crt # 5.server证书转换成ke ...
- js — 基础知识
目录 1. js的介绍 2. js的引入方式 3. js语句 4. 变量 js ( Javascript ) - 脚本语言 1. js的介绍 Javascript是一种运行在浏览器中的解释型的编程语言 ...
- php底层变量存储
变量存储 php的变量使用一个结构体 zval来保存的,在Zend/zend.h中我们可以看到zval的定义 struct _zval_struct { /* Variable information ...
- Nginx 不支持WebSocket TCP
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
- 关于MySQL的驱动org.gjt.mm.mysql.Driver
今天看了一个比较老视频使用org.gjt.mm.mysql.Driver来驱动连接,便试了一下看看怎么样,结果一直连不上数据库,后来看了tomcat的后台发现有报这个问题,于是把驱动改成com.mys ...
- 【SQL Server性能优化】删除大量数据的方法比较
原文:[SQL Server性能优化]删除大量数据的方法比较 如果你要删除表中的大量数据,这个大量一般是指删除大于10%的记录,那么如何删除,效率才会比较高呢? 而如何删除才会对系统的影响相对较小呢? ...
- 学习C#自作计算器,菜鸟初学,有大神的指点,希望做的不够好的地方请大家多多指导。同时希望非常无聊的大神能加些其它计算进去
可以做幂运算,根号运算,十进制与二进制互转,16进制与十进制互转 namespace WindowsFormsApplication15 { public partial class 祥哥计算器 : ...
- web.xml 转 学习!http://www.cnblogs.com/wkrbky/p/5929943.html
1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在web.xml配置监听器ContextLoaderListener(l ...
- 清空windows系统网络配置
清空windows系统网络配置 来源 https://www.cnblogs.com/lemon-rain/p/9569990.html 具体描述:qq,微信可用网,但其他不能用. 一.win+r ...