BZOJ_2435_[Noi2011]道路修建_dfs

题意:

http://www.lydsy.com/JudgeOnline/problem.php?id=2435

分析:

dfs搞定。

我怕爆栈写了非递归dfs。

其实bfs两遍也可以做。

代码:

#include <stdio.h>
int head[1000001],to[2000010],nxt[2000010],cnt,n,val[2000010];
int fa[1000001],siz[1000001];
__attribute__((optimize("-O2")))inline char nc(){
static char buf[100000],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
__attribute__((optimize("-O2")))inline int read(){
char ch=nc();int sum=0;
while(!(ch>='0'&&ch<='9'))ch=nc();
while(ch>='0'&&ch<='9')sum=(sum<<3)+(sum<<1)+ch-48,ch=nc();
return sum;
}
__attribute__((optimize("-O2")))int main(){
n=read();
register int i,x,y,z;
for(i=1;i<n;i++){
x=read(),y=read(),val[i]=read();siz[i]=1;
to[++cnt]=y;nxt[cnt]=head[x];head[x]=cnt;
to[++cnt]=x;nxt[cnt]=head[y];head[y]=cnt;
}
siz[n]=1;x=1;
while(x)
{
int f=0;
for(i=head[x];i;i=nxt[i])
{
if(to[i]==fa[x])continue;
f=1;
fa[to[i]]=x;
head[x]=nxt[i];
x=to[i];
break;
}
if(f==0)siz[fa[x]]+=siz[x],x=fa[x];
}
long long ans=0;
for(i=1;i<2*n-2;i+=2){
x=to[i],y=to[i+1],z=val[i+1>>1];
if(fa[y]==x){int t=x;x=y;y=t;}
ans+=1ll*z*(n-siz[x]-siz[x]<0?siz[x]+siz[x]-n:n-siz[x]-siz[x]);
}
printf("%lld\n",ans);
}

BZOJ_2435_[Noi2011]道路修建_dfs的更多相关文章

  1. bzoj 2435: [Noi2011]道路修建 树上 dp

    2435: [Noi2011]道路修建 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  2. NOI2011道路修建

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1974  Solved: 550[Submit][Status ...

  3. BZOJ 2435: [Noi2011]道路修建( dfs )

    NOI的水题...直接一遍DFS即可 ------------------------------------------------------------------------- #includ ...

  4. 2435: [Noi2011]道路修建

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2188  Solved: 639[Submit][Status ...

  5. BZOJ 2435: [Noi2011]道路修建 dfs搜图

    2435: [Noi2011]道路修建 Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他 ...

  6. 2435: [Noi2011]道路修建(树上操作)

    2435: [Noi2011]道路修建 题目:传送门 题解: 建完边之后以1为根建树,统计深度和各个点的子树大小(包括自己) 询问的时候:答案=长度*abs(n-深度大的点的子树大小*2) ans+= ...

  7. P2052 [NOI2011]道路修建——树形结构(水题,大佬勿进)

    P2052 [NOI2011]道路修建 这个题其实在dfs里面就可以把事干完的,(我一开始还拿出来求了一把)…… 一条边的贡献就是儿子的大小和n-siz[v]乘上边权: #include<cma ...

  8. 【bzoj2435】[NOI2011]道路修建

    题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿意修建恰好 n – 1条双向道路. 每条道路的修 ...

  9. 【BZOJ】2435: [Noi2011]道路修建(树形dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2435 我怎么感觉那么水.. 坑的是,dfs会爆...好吧..用bfs.. //upd:我的智商也是醉 ...

随机推荐

  1. Centos7 时区的设置

    Linux 系统(我特指发行版, 没说内核) 下大部分软件的风格就是不会仔细去考虑向后 的兼容性, 比如你上个版本能用这种程序配置, 没准到了下一个版本, 该程序已经不见了. 比如 sysvinit ...

  2. 解决ubuntu unity下gvim菜单消失的问题

    #问题描述:在终端下用gvim 指令打开 gvim就不显示菜单.在不启用unity的桌面环境下用终端打开gvim是有菜单的.从程序菜单中打开gvim是显示菜单的.用sudo打开gvim也可以显示菜单, ...

  3. Android Java端的Socket.io-client

    先讲讲历史,这个方面最早的应该是nkzawa@github的项目:http://mvnrepository.com/artifact/com.github.nkzawa/socket.io-clien ...

  4. scala函数

    1.probablePrime(6,Random) Random是scala.util._中的包 probablePrime是scala.math.BigInt._伴生对象中的方法: probable ...

  5. ExtJs Sencha Cmd创建项目以及编译项目

    一:创建项目 sencha sdk tool2.0无法创建api为sencha-touch-2.2.1的项目,需要使用SenchaCmd代替sencha sdk tool,其步骤如下: 1,下载安装s ...

  6. self,和类实例化加不加括号的理解

    # class Dog(object): # def talk(self): # print('汪汪~~~') # print(self) # self就是对象,默认将对象传递到类方法,self不需要 ...

  7. 50行ruby代码开发一个区块链

    区块链是什么?作为一个Ruby开发者,理解区块链的最好办法,就是亲自动手实现一个.只需要50行Ruby代码你就能彻底理解区块链的核心原理! 区块链 = 区块组成的链表? blockchain.ruby ...

  8. TensorFlow-谷歌深度学习库 图片处理模块

    Module: tf.image 这篇文章主要介绍TensorFlow处理图片这一块,这个模块和之前说过的文件I/O处理一样也是主要从python导过来的. 通过官方文档,我们了解到这个模块主要有一下 ...

  9. css3 resize属性

    http://www.w3school.com.cn/cssref/pr_resize.asp 实例 规定可以由用户调整 div 元素的大小: div { resize:both; overflow: ...

  10. SQL关于IN和EXISTS的用法和区别的比较

    1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....).2.exist会针对子查询的表使用索引. not exist会对主子查询都 ...