往奶牛里打气

题目评级不难。

感觉思路有值得借鉴的地方。(虽然少,毕竟积沙成塔吗qwq)

很容易看出来,是要求最小生成树的。

然后生成树的计算方式不一样。

我们考虑拼接(感觉大部分oi都可以使用类似的方法,即是先假设一部分已知,求另一部分)

我们已经知道了一颗不全的生成树,现在在往里添加点。

很显然,多出来的部分就是所添加的两点的点权加上二倍的边权(就是走两次)。

然后根绝上面。就可以写出算法。

不过开始点要多算一次。这个东西特判就好了。

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using std::sort;
using std::min;
const int maxn=101000;
int val[maxn];
struct node
{
int p1,p2;
int val;
void full(int a=0,int b=0,int c=0) { p1=a;p2=b;val=c; }
bool operator <(const node &a)const
{
return val<a.val;
}
};
node line[maxn];
int f[maxn];
int find(int x)
{
return f[x]=(f[x]==x?x:find(f[x]));
}
int main()
{
int n,p,pas=0x7fffffff;;
scanf("%d%d",&n,&p);
for(int i=1;i<=n;i++)
{
scanf("%d",&val[i]);
f[i]=i;
pas=min(pas,val[i]);
}
int a,b,c;
for(int i=1;i<=p;i++)
{
scanf("%d%d%d",&a,&b,&c);
line[i].full(a,b,val[a]+val[b]+c*2);
}
sort(line+1,line+1+p);
int get=0,tot=0,i=0;
while(get<n-1)
{
i++;
int F1=find(line[i].p1),F2=find(line[i].p2);
if(F1==F2) continue;
tot+=line[i].val;
get++;
f[F1]=F2;
}
printf("%d",tot+pas);
return 0;
}

P2916 [USACO08NOV]安慰奶牛Cheering up the Cow的更多相关文章

  1. [USACO08NOV]安慰奶牛Cheering up the Cow BZOJ 1232 Kruskal

    Farmer John变得非常懒, 他不想再继续维护供奶牛之间供通行的道路. 道路被用来连接N (5 <= N <= 10,000)个牧场, 牧场被连续地编号为1..N. 每一个牧场都是一 ...

  2. 【题解】P2916 [USACO08NOV]安慰奶牛Cheering up the Cow-C++

    原题传送门 这道题用最小生成树来完成,我选用的是kruskal(克鲁斯卡尔)来完成.这道题目在克鲁斯卡尔模板的基础上,有变动的地方只有2处:1.因为必须从一个点出发,而最小生成树最后会让所有点都连通, ...

  3. 安慰奶牛Cheering up the Cow

    传送门 一次a就很开心 可以当作kruskal模板题(orz --------------------------------------------------------------------- ...

  4. 洛谷P2916 [USACO08NOV]为母牛欢呼(最小生成树)

    P2916 [USACO08NOV]为母牛欢呼Cheering up the C… 题目描述 Farmer John has grown so lazy that he no longer wants ...

  5. BZOJ1232: [Usaco2008Nov]安慰奶牛cheer

    1232: [Usaco2008Nov]安慰奶牛cheer Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 578  Solved: 403[Submi ...

  6. 1232: [Usaco2008Nov]安慰奶牛cheer

    1232: [Usaco2008Nov]安慰奶牛cheer Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 612  Solved: 431[Submi ...

  7. 算法笔记_067:蓝桥杯练习 算法训练 安慰奶牛(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是 ...

  8. [bzoj1232][Usaco2008Nov]安慰奶牛cheer_Kruskal

    安慰奶牛 cheer bzoj-1232 Usaco-2008 Nov 题目大意:给定一个n个点,m条边的无向图,点有点权,边有边权.FJ从一个点出发,每经过一个点就加上该点点权,每经历一条边就加上该 ...

  9. 洛谷 P2916 [USACO08NOV]为母牛欢呼Cheering up the C…

    题目描述 Farmer John has grown so lazy that he no longer wants to continue maintaining the cow paths tha ...

随机推荐

  1. 简单的CRUD(二)

    一.重构简单的CRUD 1.JDBC工具类 1.因为在crud中都包含一些相同的代码所以可以提取出来,抽取代码重构为工具类. 2.将工具类设置为static静态类,方便调用,不需要new对象. pub ...

  2. Spring_Spring与IoC_基于XML的DI

    一.注入分类 bean实例在调用无参构造器创建空值对象后,就要对Bean对象的属性进行初始化.初始化时由容器自动完成的,称为注入.根据注入方式的不同,常用的有2类:设值注入.构造注入.(还有一种,实现 ...

  3. Linux pip 安装模块时,一直黄字错误:Could not find a version that satisfies the requirement

    参考原文:https://blog.csdn.net/u012592062/article/details/51966649 这时我们用国内的镜像源来加速 pip install 包名-i http: ...

  4. 数据上下文中的AddOrUpdate方法

    AddOrUpdate是扩展方法,需要添加引用  using System.Data.Entity.Migrations;

  5. IIS 网站发布——遇到的问题,以及解决方案

    在 解决方案——Web 右键  发布  如图:   之后,在其他文件夹或盘  放入发布之后 生成的文件 如图所示,之所以这样是为了好整理查找发布的项目.   之后,在IIS 上发布出去     首先 ...

  6. 转动的八卦图纯css实现

      这类的东西网上一搜就是大把的,看着比较空旷的博客,所以自己也来写一个. <!DOCTYPE html> <html> <head> <meta chars ...

  7. C语言归并排序

    这篇文章是学习了小甲鱼-数据结构与算法结合自考教材编写出的代码,希望自己逐渐在算法造诣上能更上一层楼. 归并排序(递归实现) “归并”一词在中文含义中就是合并的意思,而在数据结构中的定义是将两个或者两 ...

  8. 您需要售后返修管理软件的N个理由

    一.减少人工成本. 二.提高工作效率. 三.其他管理成本降低. ▲传统采用人工登记或电子表格Excel管理 售后人员,他们日常的工作就是接件.维修.送修.记录.统计.跟件.寄送件.电话客户沟通.电话厂 ...

  9. Windows API 编程-----Windows NT 环境下禁止任务切换

    函数原型: BOOL WINAPI SystemParametersInfo( _In_ UINT uiAction, _In_ UINT uiParam, _Inout_ PVOID pvParam ...

  10. C#链接数据库:SQL Server 2008

    自己学习C#编程,在WinForm编程中,代码测试连接数据库. 现在sqlserver中测试使用的数据库能否以指定的用户名和密码登录. 如图所示,计算机名为administrator,数据库实例为sq ...