一看到这道题觉得很水,打了递归树形DP后RE了一组,后来发现必须非递归(BFS)

递归版本84分:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int N,point[],next[],v[],c[],cnt=,f[];
bool p[];
long long sum=;
void insect(int x,int y,int z){next[cnt]=point[x];point[x]=cnt;v[cnt]=y;c[cnt]=z;cnt++;}
void dfs(int x)
{
int i;
f[x]=;
for (i=point[x];i!=-;i=next[i])
if (p[v[i]]==)
{
p[v[i]]=;
dfs(v[i]);
f[x]+=f[v[i]];
sum+=(1LL*c[i]*abs(*f[v[i]]-N));
}
}
int main()
{
int i,x,y,z;
memset(point,-,sizeof(point));
memset(next,-,sizeof(next));
memset(v,,sizeof(v));
memset(p,,sizeof(p));
memset(c,,sizeof(c));
memset(f,,sizeof());
scanf("%d\n",&N);
for (i=;i<N;++i)
{
scanf("%d %d %d\n",&x,&y,&z);
insect(x,y,z); insect(y,x,z);
}p[]=;dfs();
printf("%lld\n",sum);
return ;
}

BFS版本AC:

#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int N,point[],next[],v[],c[],cnt=,f[],s[],fa[];
int table[],num=,du[];
bool p[];
long long sum=;
void insect(int x,int y,int z){next[cnt]=point[x];point[x]=cnt;v[cnt]=y;c[cnt]=z;cnt++;}
void dfs(int x)
{
int now,i,tmp=;
queue<int>q;
for (i=;i<=N;++i)
{
if (du[i]==)
q.push(i),f[i]=;
f[i]=;
}
while (!q.empty())
{
now=q.front(); q.pop(); p[now]=; tmp=now;
for (i=point[now];i!=-;i=next[i])
if (p[v[i]]==)
{
f[v[i]]+=f[now];
du[v[i]]--;
if (du[v[i]]==)
q.push(v[i]);
}
}
memset(p,,sizeof(p));
p[tmp]=; q.push(tmp);
while (!q.empty())
{
now=q.front(); q.pop();
for (i=point[now];i!=-;i=next[i])
if (p[v[i]]==)
{
p[v[i]]=;
sum+=(1LL*c[i]*abs(*f[v[i]]-N));
q.push(v[i]);
}
}
printf("%lld\n",sum);
}
int main()
{
int i,x,y,z;
memset(point,-,sizeof(point));
memset(next,-,sizeof(next));
memset(du,,sizeof(du));
memset(v,,sizeof(v));
memset(p,,sizeof(p));
memset(c,,sizeof(c));
memset(f,,sizeof());
scanf("%d\n",&N);
for (i=;i<N;++i)
{
scanf("%d %d %d\n",&x,&y,&z); du[x]++; du[y]++;
insect(x,y,z); insect(y,x,z);
}dfs();
return ;
}

BZOJ 2435 道路修建 NOI2011 树形DP的更多相关文章

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

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

  2. BZOJ2435 [Noi2011]道路修建 【树形Dp 吧。。】

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

  3. 【BZOJ-2435】道路修建 (树形DP?)DFS

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3115  Solved: 1002[Submit][Statu ...

  4. bzoj 2435 道路修建

    Written with StackEdit. Description 在 \(W\) 星球上有 \(n\) 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是 ...

  5. bzoj 2435: [Noi2011]道路修建【树形dp】

    dp求size和deep,然后对每条边模拟求代价即可 #include<iostream> #include<cstdio> #include<algorithm> ...

  6. [BZOJ 4033] [HAOI2015] T1 【树形DP】

    题目链接:BZOJ - 4033 题目分析 使用树形DP,用 f[i][j] 表示在以 i 为根的子树,有 j 个黑点的最大权值. 这个权值指的是,这个子树内部的点对间距离的贡献,以及 i 和 Fat ...

  7. [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)

    [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...

  8. BZOJ 2878: [Noi2012]迷失游乐园( 树形dp )

    一棵树的话直接树形dp(求出往下走和往上走的期望长度). 假如是环套树, 环上的每棵树自己做一遍树形dp, 然后暴力枚举(环上的点<=20)环上每个点跑经过环上的路径就OK了. -------- ...

  9. BZOJ 2286 消耗战 (虚树+树形DP)

    给出一个n节点的无向树,每条边都有一个边权,给出m个询问,每个询问询问ki个点,问切掉一些边后使得这些顶点无法与顶点1连接.最少的边权和是多少.(n<=250000,sigma(ki)<= ...

随机推荐

  1. noip2014提高组day2二题题解-rLq

    (又是昨天的作业……本题写于昨天) (这破题都做这么久,我是不是吃枣药丸……) (好吧这是一道图论题呢) 本题地址:http://www.luogu.org/problem/show?pid=2296 ...

  2. 我的Unity学习路线

    前言 上班的时间内都很忙在做项目,休息时间里闲下来了,却觉得没什么事做不自在.难道真是苦逼的命不会享受? 想了一下这一段时间以来的过程:先是重新看了一遍Unity的基础部分,然后买了<3D数学基 ...

  3. 如何修复AppScan漏洞

    [AppScan]修复漏洞一:启用不安全的HTTP方法 (中) 漏洞背景:      “启用了不安全的 HTTP 方法”属于“中”危漏洞.漏洞描述是:根据APPSCAN的报告,APPSCAN通过OPT ...

  4. <转>如何进行code review

    转自: http://pm.readthedocs.org/zh_CN/latest/codereview/howto.html 如何进行code review? code reivew是保障代码质量 ...

  5. Oracle中没有 if exists(...)

    对于Oracle中没有 if exists(...) 的语法,目前有许多种解决方法,这里先分析常用的三种,推荐使用最后一种 第一种是最常用的,判断count(*)的值是否为零,如下declare  v ...

  6. POJ 1141 Brackets Sequence

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29502   Accepted: 840 ...

  7. C# Winform关于控件TabControl闪烁的问题

    自己重写了一个Form,然后再该form上放一个TabControl鼠标移上去会闪烁,经过网上查找解决方案,最后总算是解决了....下面附上代码: 重写一个TabControl代码如下: using ...

  8. 浅谈WebService返回数据效率对比

    原文链接 http://www.dotnetgeek.cn/xuexiwebservice1.html 一.什么是WebService: 简单通俗来说,就是企业之间.网站之间通过Internet来访问 ...

  9. tcpdump参数应用

    详细参数: http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 我用到的参数: 一 tcpdump重要参数 -i 指定监听 ...

  10. 挂多个class还是新建class —— 多用组合,少用继承

    用css实现下面的效果图. 方案一 <style type="text/css"> .myList1 { border: 1px solid #333; padding ...