传送门

如果没有挖井只是联通所有点就是最小生成树

但是有挖井,我们需要转换一下

把挖井操作看成 0 号点连一条边过去

然后还是最小生成树..

因为是稠密图,所以用 prim 算法来求最小生成树

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<queue>
using namespace std;
typedef long long ll;
inline int read()
{int x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); }while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); }return x*f;
}
const int N=507,INF=0x3f3f3f3f;
int n,ans,mp[N][N];
struct data
{int dis,id;inline bool operator < (const data &tmp) const {return dis>tmp.dis;}
};
priority_queue <data> q;
int dis[N];
bool vis[N];
void prim(int st)//prim模板
{memset(dis,INF,sizeof(dis));q.push((data){0,st}); dis[0]=0;while(!q.empty()){data x=q.top(); q.pop();if(vis[x.id]) continue;vis[x.id]=1; ans+=x.dis;for(int i=0;i<=n;i++)if(dis[i]>mp[x.id][i]){dis[i]=mp[x.id][i];q.push((data){mp[x.id][i],i});}}
}
int main()
{n=read();for(int i=1;i<=n;i++) mp[0][i]=mp[i][0]=read();//0号点连边for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) mp[i][j]=mp[j][i]=read();prim(0);printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/LLTYYC/p/9854655.html

P1550 [USACO08OCT]打井Watering Hole相关推荐

  1. 洛谷P1550 [USACO08OCT]打井Watering Hole

    P1550 [USACO08OCT]打井Watering Hole 题目背景 John的农场缺水了!!! 题目描述 Farmer John has decided to bring water to ...

  2. Luogu P1550 [USACO08OCT]打井Watering Hole

    0号结点:农夫John山泉天然矿泉水( by Luogu第一篇题解 #include<cstdio> #include<cstring> #include<algorit ...

  3. USACO oct. 09 Watering Hole

    USACO oct. 09 Watering Hole 2017年7月15日 Prim算法 #include<iostream> #include<algorithm> #in ...

  4. [Usaco2008 Oct]Watering Hole 挖水井

    相关链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1938 描述: Description 农夫约翰决定给他的N(1<=N<=3 ...

  5. [bzoj1601]灌水(洛谷P1550)

    [USACO08OCT]Watering Hole G 洛谷灌水区 传送门 D e s c r i p t i o n Description Description Farmer John已经决定把 ...

  6. 2021春 算法复习

    1. [USACO12FEB]Cow Coupons G 题面:https://www.luogu.com.cn/problem/P3045 贪心+堆.首先在优惠券没用完的情况下按优惠价从小到大全部买 ...

  7. POJ 2182 Lost Cows [树状数组+二分]

    Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular di ...

  8. Lost Cows POJ - 2182(线段树)

    N (2 <= N <= 8,000) cows have unique brands in the range 1-N. In a spectacular display of poor ...

  9. poj2182 Lost Cows-线段树

    Description N (2 <= N <= 8,000) cows have unique brands in the range 1-N. In a spectacular dis ...

最新文章

  1. 物理机linux无法上网,物理机不能访问虚拟机VMNet8中的Linux
  2. springMVC乱码问题
  3. 汽车租赁系统java窗口_共享型汽车租赁系统(SSM+MySql)
  4. 小程序 移植 云开发_使用Kubernetes探索跨云的应用程序可移植性
  5. Unit 3 return codes and traps
  6. Codeforces 1029B. Creating the Contest 动态规划O(nlogn)解法 及 单调队列O(n)解法
  7. Mocha: 58同城 App 基于卡片的线上 AB 测(线上卡片动态换)
  8. android壁纸服务,android壁纸服务流程浅析
  9. Shiro面试题总结
  10. ML笔记 - 自然语言处理常用技术
  11. nodejs mysql嵌套查询_nodejs+mysql嵌套查询的问题
  12. favi.icon是什么?
  13. 机器人社社长事迹_新京报整版报道我校机器人学院校友刘鹏见义勇为等事迹
  14. 解决css样式中first-child和last-child不生效的问题
  15. DHCP:(5)华为防火墙USG上部署DHCP服务以及DHCP中继
  16. Windows系统自带录屏功能,再也不用下录屏软件了
  17. Jasper(2)——简单使用导出PDF报表
  18. 【信号去噪】基于蚁群算法优化小波阈值实现信号去噪附matlab代码
  19. 浙江农林大学ACM集训队2019级队长退役回忆录(未实际退役版本)
  20. 【Eelectron-vue】构建桌面应用(20)-electron的退出quit和exit

热门文章

  1. Python用20行代码实现完整邮件功能 [完整代码+建议收藏]
  2. c语言 乘号 指针 避免,C语言指针篇(一)指针与指针变量
  3. 数据中台不是企业的万能妙药
  4. 超多种类的报表模板,填上数据就能用,全拿走!
  5. 学会用这个工具做分析,1年积累3年工作经验
  6. 制药企业核算报表系统整体方案
  7. 饱和气压与温度的关系_气压和钓鱼的关系,冬天钓鱼还需要看气压吗?很多钓友都错了...
  8. android gallery源代码,可循环显示图像的Android Gallery组件
  9. 华尔街英语学习软件_华尔街英语吧啦吧啦聊点啥:语言学习交流至上
  10. android 图片墙拼贴,三步搞定 用APP打造图片文字拼贴效果