……

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
typedef pair<int,int> par;
typedef long long ll;
int s[510005][26], n, len, cnt, idx[510005], hea[510005], qqq, siz[510005], orz;
int faq[510005];
ll ans;
char ss[510005];
vector<par> vec[510005];
struct Edge{
int too, nxt;
}edge[1020005];
void add_edge(int fro, int too){
edge[++qqq].nxt = hea[fro];
edge[qqq].too = too;
hea[fro] = qqq;
}
void dfs1(int x, int f){
if(idx[x]){
add_edge(x, f);
add_edge(f, x);
f = x;
}
for(int i=0; i<26; i++)
if(s[x][i])
dfs1(s[x][i], f);
}
void dfs2(int x, int f){
siz[x] = 1;
for(int i=hea[x]; i; i=edge[i].nxt){
int t=edge[i].too;
if(t==f) continue;
dfs2(t, x);
siz[x] += siz[t];
vec[x].push_back(make_pair(siz[t], t));
}
sort(vec[x].begin(), vec[x].end());
}
void dfs3(int x, int f){
if(x) faq[x] = ++orz;
for(int i=0; i<vec[x].size(); i++)
dfs3(vec[x][i].second, x);
ans += faq[x] - faq[f];
}
int main(){
cin>>n;
for(int i=1; i<=n; i++){
scanf("%s", ss);
len = strlen(ss);
int u=0;
for(int j=len-1; j>=0; j--){
int t=ss[j]-'a';
if(!s[u][t]) s[u][t] = ++cnt;
u = s[u][t];
}
idx[u] = i;
}
dfs1(0, 0);
dfs2(0, 0);
dfs3(0, 0);
cout<<ans<<endl;
return 0;
}

最新文章

  1. iOS的一像素线
  2. Spring任务调度之Quartz
  3. jsp调用java方法 function taglib
  4. Oracle 取随机数(转)
  5. Codevs 1003 电话连线
  6. PowerDesigner中转换物理模型时的命名转换
  7. highcharts 结合phantomjs纯后台生成图片系列二之php
  8. DataGrid列的合并
  9. 如何解决编译linux内核(解决声卡问题),遭遇fatal error: linux/limits.h: 没有那个文件或目录
  10. poj2236(并查集)
  11. javase基础回顾(四) 自定义注解与反射
  12. [BZOJ]3671 随机数生成器(Noi2014)
  13. Java初始化块
  14. 【Guava】使用Guava的RateLimiter做限流
  15. webpack学习笔记--其它配置项
  16. Django ORM 操作 必知必会13条 单表查询
  17. get_client_ip() 获取IP地址
  18. linux 排查page的状态问题
  19. mysql的表和约束操作
  20. 洛谷 P1939 【模板】矩阵加速(数列) 解题报告

热门文章

  1. JAVA基础之网络通信协议--TCP与UDP
  2. 1169 传纸条 2008年NOIP全国联赛提高组 个人博客:attack.cf
  3. 【开发小结】Two Steps from Deadline
  4. Writable和Comparable
  5. SQL SEVER数据库重建索引的方法
  6. CF Gym 100187A Potion of Immortality (思路,最坏情况的最小损失)
  7. 2018.5.8 XML编程
  8. 修改deeplabv3的test的输出的label颜色
  9. JQuery EasyUI学习记录(五)
  10. RabbitMQ 学习资料