注意到目录是一颗树结构,然后就简单了,预以1为根的处理出dis[u]为以这个点为根,到子树内的目录总长,si为子树内叶子数

第二遍dfs换根即可

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=100005;
int n,h[N],cnt,tot,si[N],de[N],l[N];
long long f[N],mn,dis[N];
bool v[N];
char c[20];
struct qwe
{
int ne,to;
}e[N<<1];
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
void add(int u,int v)
{
cnt++;
e[cnt].ne=h[u];
e[cnt].to=v;
h[u]=cnt;
}
void pre(int u,int fa)
{
if(v[u])
return;
for(int i=h[u];i;i=e[i].ne)
if(e[i].to!=fa)
{
pre(e[i].to,u);
si[u]+=si[e[i].to];
dis[u]+=dis[e[i].to];
}
dis[u]+=si[u]*l[u];
}
void dfs(int u,int fa)
{
for(int i=h[u];i;i=e[i].ne)
if(e[i].to!=fa)
{
f[e[i].to]=f[u]-si[e[i].to]*l[e[i].to]+3*(tot-si[e[i].to]);
dfs(e[i].to,u);
mn=min(mn,f[e[i].to]);
}
}
int main()
{
n=read();
for(int i=1;i<=n;++i)
{
scanf("%s",c);
int m=read();
l[i]=strlen(c)+1;
if(!m)
tot++,dis[i]=strlen(c),v[i]=si[i]=1;
while(m--)
{
int x=read();
add(i,x),add(x,i);
}
}
pre(1,1);
for(int i=h[1];i;i=e[i].ne)
dis[1]-=l[1]*si[e[i].to];
f[1]=dis[1];
mn=f[1];
dfs(1,1);
printf("%lld",mn);
return 0;
}

最新文章

  1. PTA Hashing
  2. virtual修饰符
  3. AspNet WebApi OData 学习
  4. 【暑假】[实用数据结构]UVa11997 K Smallest Sums
  5. windows下virtualenv使用报错
  6. 我的Android进阶之旅------&gt;Android 设置默认语言、默认时区
  7. 立贴读 《CLR》
  8. 大兴雷克萨斯深度剖析2013款LS460L_深圳大兴雷克萨斯_太平洋汽车网
  9. STM8S ADC初始化设置及应用
  10. linux配置分步安装lnmp环境----ghj
  11. mavean的依赖传递和排除依赖
  12. git之命令git checkout
  13. 模板方法模式-Template Method(Java实现)
  14. coTurn 使用测试方法
  15. PHP和Nginx 文件上传大小限制问题解决方法
  16. Android adjustresize全屏无效问题
  17. 《剑指offer》第十八题(在O(1)时间删除链表结点)
  18. Java并发(八):AbstractQueuedSynchronizer
  19. Java基础之进制转换
  20. See You Again——我最后的汇编程序

热门文章

  1. linux上安装启动elasticsearch-5.5.1完整步骤
  2. sdk manager 创建的虚拟机启动的时候总是在Android字样解决
  3. Node.js - 断言
  4. 分享一个检测用户是否用手机(Mobile)访问网站的 PHP 类
  5. 【转】TestNG执行顺序控制
  6. NYOJ 158 省赛来了
  7. java里int类型转byte类型
  8. Android之——AIDL深入
  9. php 文件压缩zip扩展
  10. Spring创建JobDetail的两种方式