灌水 bzoj-1601

    题目大意:给你n块地,将两块地之间连通有代价$P_{i,j}$,单独在一块地打井需要代价$C_i$,问将所有的井都有水的代价是多少。

    注释:1<=n<=300.

      想法:这种题做过一遍就好了,我们新建立一个0号节点。如果两块地之间打通就在这两个点之间连边。如果这个点单独打井就将这个点与新建节点连边,权值为打井代价。然后跑最小生成树。首先我们知道,这n块地中至少有一块地是打井的,不然就算所有的点都连通,也是没有水的。所以,这个强大的算法显然是正确的。

    最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct Node
{
int a,b,val;
}f[1001000];
int fa[10001];
bool cmp(Node a,Node b)
{
return a.val<b.val;
}
int find(int x)
{
return x==fa[x]?x:(fa[x]=find(fa[x]));
}
bool merge(int x,int y)
{
x=find(x);y=find(y);
if(x==y) return false;
fa[x]=y;return true;
}
int main()
{
int n;
scanf("%d",&n);
int cnt=0;
for(int i=0;i<=n;i++) fa[i]=i;
for(int i=1;i<=n;i++)//向0号节点加边
{
int x;
scanf("%d",&x);
f[++cnt].a=0;
f[cnt].b=i;
f[cnt].val=x;
}
for(int i=1;i<=n;i++)//邻接矩阵,地与地之间的联通代价
{
for(int j=1;j<=n;j++)
{
int x;
cin >> x;
if(i>j)
{
f[++cnt].a=i;
f[cnt].b=j;
f[cnt].val=x;
}
}
}
sort(f+1,f+cnt+1,cmp);
int count=0;
int ans=0;
for(int i=1;i<=cnt;i++)//kruskal
{
if(merge(f[i].a,f[i].b))
{
ans+=f[i].val;
count++;
}
if(count==n) break;//注意,我们是在跑n+1个点的kruskal,所以count的退出条件是count==n
}
printf("%d\n",ans);
return 0;
}

    小结:思路题,超级好玩的qwq

[bzoj1601]灌水_kruskal的更多相关文章

  1. [BZOJ1601] 灌水

    难点:找到正确方式建图 知识点:Kruskal 分析:这种题肯定要把点权转换到边权上,但肯定无法搞到和其他点相连的边上,怎么办呢?那就再造一个点呗,这个“超级点”和所有点相连,且边权=点权,于是就可以 ...

  2. bzoj1601: [Usaco2008 Oct]灌水

    经典延伸最小生成树问题... #include<cstdio> #include<cstring> #include<cctype> #include<alg ...

  3. [BZOJ1601] [Usaco2008 Oct] 灌水 (kruskal)

    Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. ...

  4. 【最小生成树】Bzoj1601[Usaco2008 Oct]灌水

    Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. ...

  5. [BZOJ1601][Usaco2008 Oct]灌水 最小生成树水题

    1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 2121  Solved: 1393[Submit][St ...

  6. bzoj1601【Usaco2008 Oct】灌水

    1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1589  Solved: 1035 [Submit][ ...

  7. ML的灌水现象

    (http://demonstrate.ycool.com/post.3137870.html) 看了几天 paper 和书,发现自己果然就是 zt好多东西就是不懂,那些人做的真快,我才建立起一种大致 ...

  8. 【BZOJ】1601: [Usaco2008 Oct]灌水(kruskal)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1601 很水的题,但是一开始我看成最短路了T_T 果断错. 我们想,要求连通,对,连通!连通的价值最小 ...

  9. 2014.06.20 (转)IEEE与论坛灌水

    转自"饮水思源"      电子类学生大都知道IEEE, 这个IEEE就像一个大的BBS论坛,而这个协会下面有很多杂志,比如图像处理,信号处理,微波技术等.这些杂志就是论坛下的分版 ...

随机推荐

  1. windows 7蓝屏解决办法

    1.通过工具打开出现蓝屏原因的dmp文件,找到原因 Unable to load image \SystemRoot\system32\ntkrnlpa.exe, Win32 error 0n2 2. ...

  2. Java基本数据类型的长度范围

    1.Java基本数据类型的长度范围代码 /** * @Title:DataTypeLength.java * @Package:com.you.dao * @Description:Java数据类型长 ...

  3. MySQL查看最大连接数和修改最大连接数

    MySQL查看最大连接数和修改最大连接数 1.查看最大连接数       show variables like '%max_connections%'; 2.修改最大连接数       set GL ...

  4. Linux查看网络的联机状态

    Linux查看网络的联机状态 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ netstat -a^C unix 3 [ ] 流 已连接 14923 @/tmp ...

  5. Regex 正则替换指定范围全部字符串

    1.正则替换字符-------------------------------------------------------------------------------------------- ...

  6. HTML5结合CSS的三种方法+结合JS的三种方法

    HTML5+CSS: HTML中应用CSS的三种方法 一.内联 内联样式通过style属性直接套进HTML中去. 示例代码 <pstylepstyle="color:red" ...

  7. Word巧用大纲视图 快速重排版面

    对于由于内容顺序混乱而造成的目录顺序不当的文章,通常我们一定会想到先对文档内容进行手工排序,然后重新提取目录.但这样操作显然麻烦,而且也容易出错.对于从正文内容自动提取出来的目录,由于按住Ctrl键单 ...

  8. 【BZOJ2527】MET-Meteors(整体二分)

    [BZOJ2527]MET-Meteors(整体二分) 题面 BZOJ权限题,良心洛谷链接 题解 其实我也不会做 看了zsy博客才会做... 这题如果直接爆算做显然行不通 如果只有单次询问,我们就可以 ...

  9. Rlwrap工具的安装和配置

    1.创建安装目录装备安装包 root权限 [root@dbsrc oracle]# mkdir /stage [root@dbsrc oracle]# chmod –R 777 /stage 从U盘将 ...

  10. 从头编写asp.net core 2.0 web api 基础框架 (5) + 使用Identity Server 4建立Authorization Server (7) 可运行前后台源码

    前台使用angular 5, 后台是asp.net core 2.0 web api + identity server 4. 从头编写asp.net core 2.0 web api 基础框架: 第 ...