bzoj1232[Usaco2008Nov]安慰奶牛cheer

题意:

给出n个节点的带权图,第i个节点ci。现在你要在这个图中选出一棵树和一个起点,然后你要从起点出发到达所有的节点(不能跳点)再回到起点,经过边的时间为边权,每经过一个点就要花等同于点权的时间(即使这个点已经过)。问如何使时间最短。n≤10000。

题解:

每条边的边权为这条边原来的边权加两个端点的点权(因为每个点都要经过两次),然后做最小生成树。

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <queue>
 5 #define inc(i,j,k) for(int i=j;i<=k;i++)
 6 #define maxn 10010
 7 using namespace std;
 8
 9 inline int read(){
10     char ch=getchar(); int f=1,x=0;
11     while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
12     while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
13     return f*x;
14 }
15 struct e{int f,t,w;}es[maxn*10]; bool cmp(e a,e b){return a.w<b.w;} int c[maxn],n,m,mn,ans,tot,fa[maxn];
16 int find(int x){
17     return x==fa[x]?x:fa[x]=find(fa[x]);
18 }
19 int main(){
20     n=read(); m=read(); inc(i,1,n)c[i]=read(); mn=0x3fffffff; inc(i,1,n)mn=min(mn,c[i]);
21     inc(i,1,m){int a=read(),b=read(),d=read(); es[i]=(e){a,b,d*2+c[a]+c[b]};}
22     inc(i,1,n)fa[i]=i; sort(es+1,es+1+m,cmp);
23     inc(i,1,m){
24         int x=find(es[i].f),y=find(es[i].t); if(x!=y)fa[x]=y,tot++,ans+=es[i].w; if(tot==n-1)break;
25     }
26     printf("%d",ans+mn); return 0;
27 }

20160918

转载于:https://www.cnblogs.com/YuanZiming/p/5882917.html

bzoj1232[Usaco2008Nov]安慰奶牛cheer*相关推荐

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

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

  2. bzoj 1232: [Usaco2008Nov]安慰奶牛cheer【最小生成树】

    有趣 每条边在算答案的时候被算了二倍的边权值加上两个端点的权值,然后睡觉点额外加一次 所以可以用这个权做MST,然后加上点权最小的点 #include<iostream> #include ...

  3. bzoj 1232 [Usaco2008Nov]安慰奶牛cheer

    思路:看出跟dfs的顺序有关就很好写了, 对于一棵树来说确定了起点那么访问点的顺序就是dfs序,每个点经过 其度数遍,每条边经过2边, 那么我们将边的权值×2加上两端点的权值跑最小生成树,最后加上一个 ...

  4. BZOJ1232 安慰奶牛cheer (洛谷2916)

    标签:并查集,最小生成树 tips:bzoj这题为权限题,可以去洛谷2916提交 Description Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N ( ...

  5. BZOJ 1232 USACO 2008 Nov. 安慰奶牛Cheer

    [题解] 对于每一条边,我们通过它需要花费的代价是边权的两倍加上这条边两个端点的点权. 我们把每条边的边权设为上述的值,然后跑一边最小生成树,再把答案加上最小的点权就好了. 1 #include< ...

  6. 蓝桥杯-安慰奶牛(java)

    算法训练 安慰奶牛   时间限制:1.0s   内存限制:256.0MB 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为 ...

  7. P2916 [USACO08NOV]安慰奶牛Cheering up the Cow

    题目 P2916 [USACO08NOV]安慰奶牛Cheering up the Cow 分析 这题开始不是很懂它的意思,看了题解才懂的.举个例子:有一条边 a->b 那么假定我们从a点出发再回 ...

  8. 安慰奶牛 问题描述 Farmer John变得非常懒,他不想再继续维

    package ALGO;/*安慰奶牛 时间限制:1.0s 内存限制:256.0MB问题描述Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续 ...

  9. C语言题目奶牛牧场,C语言算法训练:安慰奶牛

    C语言算法训练:安慰奶牛 导语:FJ变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.下面我们来看看C语言算法训练:安慰奶牛. 每一个牧场都是一个奶 ...

最新文章

  1. Synchronized的两个用法
  2. mysql表创建在哪_mysql创建表命令是哪句
  3. Ado.net 创建DataTable
  4. java源码导入eclipse_spring5源码如何导入eclipse
  5. 我在 Go 圈儿里的几位老朋友
  6. python实现栈的操作入站出站查找元素等_Python实现的栈(Stack)
  7. QCon演讲|闲鱼从零到千万DAU的应用架构演进
  8. 函数调用关系python_追踪python函数调用关系
  9. linux版gaussian运行,【求助】gaussian 在linux不能运行?急急急 - 量子化学 - 小木虫 - 学术 科研 互动社区...
  10. 计算机网络技术基础竞赛题,网络技术基础知识竞赛试题
  11. 从财报看纳德拉上任两年:云服务是最大的突破
  12. xp系统禁止开机启动服务器,Window XP 开机启动超慢,哪些系统服务和进程可以禁用?...
  13. python笔记11 - lambda函数,globals()/locals()函数,eval()exec()函数,闭包函数,函数式编程,高阶函数
  14. 无广告托管应用,免费的应用分发平台,提供下载次数等数据统计,Android、ios应用合并,一个二维码搞定
  15. 出场、入场动画大全,基于NineOldAndroids轻松实现动画效果
  16. 原型模式与深拷贝浅拷贝
  17. Java 计算日期差
  18. java中的直接内存
  19. 用户模块跳转、sso单点登录、跨域访问
  20. java语言保留结构和联合_在下列概念中, Java 语言只保留了

热门文章

  1. oracle日期与字符串的相互转化
  2. 汇总少了退款汇总 多了一笔支付汇总 很可能是因为商户退款配置的是正交易权限(配置的问题)
  3. 2.mysql数据库如何安装_MySQL数据库如何安装
  4. excel操作练习_你见过最好的Excel教程有哪些?
  5. centos8搭建nsis交叉编译环境
  6. 并发编程-信号量的使用方法和其实现原理
  7. Struts2 自定义验证器
  8. 搭建局域网YUM服务器
  9. 协鑫集成携中国成套工程在核灾区建立1GW光伏电站
  10. EasyUI——DataGrid中嵌入Radio