题意:

御坂和她的n-1个克隆姐姐(编号1~n-1)构成一张御坂网络,如果第x号"姐姐"和第y号"姐姐"有条x到y的有向边,则说明x可以将信息传给y,已知御坂妹妹作为n号点,是所有信息的源头,如果屏蔽掉x点之后y点无法得到御坂妹妹的信息,那么说明x是y的支配点,对于所有的点,求出它所有支配点的编号和(包括她自身的编号)

特殊的:如果x点本身就得不到信息,该点输出0

支配树模板题

Lengauer-Tarjan算法搞定

注意不用新建节点,直接将n作为支配树的根,对于在支配树中的点,答案就是该点到根的编号和,

对于不在支配树中的点,答案为0

模板:

#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
#define LL long long
LL n, cnt, sdom[60005], idom[60005], key[60005], rak[60005];
LL dfn[60005], ufs[60005], fa[60005], val[60005];
vector<LL> G[60005], Gp[60005], Z[60005], Sp[60005];
LL Find(LL p)
{LL temp;if(ufs[p]==p)return p;temp = Find(ufs[p]);if(sdom[key[ufs[p]]]<sdom[key[p]])key[p] = key[ufs[p]];return ufs[p] = temp;
}
void Sech2(LL u)
{LL i, v;val[u] += u;for(i=0;i<Z[u].size();i++){v = Z[u][i];val[v] += val[u];Sech2(v);}
}
void Sech(LL p)
{LL i, v;dfn[p] = sdom[p] = ++cnt;rak[cnt] = p;for(i=0;i<G[p].size();i++){v = G[p][i];if(dfn[v]==0){Sech(v);fa[v] = p;}}
}
int main(void)
{LL m, i, x, y, p, j, v;while(scanf("%lld%lld", &n, &m)!=EOF){cnt = 0;for(i=1;i<=n;i++){dfn[i] = val[i] = idom[i] = sdom[i] = 0;ufs[i] = key[i] = i;G[i].clear();Gp[i].clear();Z[i].clear();}for(i=1;i<=m;i++){scanf("%lld%lld", &x, &y);G[x].push_back(y);Gp[y].push_back(x);}Sech(n);for(i=cnt;i>=2;i--){p = rak[i];for(j=0;j<Gp[p].size();j++){v = Gp[p][j];if(dfn[v]){Find(v);sdom[p] = min(sdom[p], sdom[key[v]]);}}ufs[p] = fa[p];Sp[rak[sdom[p]]].push_back(p);for(j=0;j<Sp[fa[p]].size();j++){v = Sp[fa[p]][j];Find(v);if(sdom[key[v]]==sdom[v])idom[v] = fa[p];elseidom[v] = key[v];}Sp[fa[p]].clear();}for(i=1;i<=cnt;i++){p = rak[i];if(idom[p]!=rak[sdom[p]])idom[p] = idom[idom[p]];}for(i=1;i<=n-1;i++)Z[idom[i]].push_back(i);Sech2(n);printf("%lld", val[1]);for(i=2;i<=n;i++)printf(" %lld", val[i]);printf("\n");}return 0;
}
/*
13 21
13 2   11 12   7 4
2 3   12 1   6 4
3 4   13 11
4 5   8 12
2 6   1 10
6 7   10 9
13 8   10 5
8 9   5 13
9 10  5 4
8 11
*/

HDU 4694: Important Sisters(支配树)相关推荐

  1. Lengauer-Tarjan算法--支配树构造(bzoj 2815: [ZJOI2012]灾难)

    模型: 一个有向图G,设定一个点r,要求点r能到达G中所有的点,如果这样的点不存在,新建并向所有入度为0的点连边 支配点: 对于点u,如果在删掉点p之后,r不能到达u,那么称p(p!=u)点是u点的一 ...

  2. [ACM] hdu 1671 Phone List (字典树)

    [ACM] hdu 1671 Phone List (字典树) Phone List Problem Description Given a list of phone numbers, determ ...

  3. HDU4694 Important Sisters

    支配树 其实还是一道支配树板子题.. 最后在树上dfs统计一下点到根的信息就行啦- #include <bits/stdc++.h> #define INF 0x3f3f3f3f #def ...

  4. hihocoder #1343 : Stable Members(支配树)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Recently Little Hi joined an algorithm learning group. The gr ...

  5. 【学习笔记】DAG / 一般有向图的支配树 / 灭绝树

    定义与声明 一个有向图 GGG.给定一个起点 sss,假设 sss 能到达所有点. 若去掉某个点 iii 后,sss 无法到达 jjj,则称 iii 为 jjj 的支配点. 显然支配点存在传递关系. ...

  6. P5180-[模板]支配树

    正题 题目链接:https://www.luogu.com.cn/problem/P5180 题目大意 给出nnn个点的一张有向图,求每个点支配的点数量. 1≤n≤2×105,1≤m≤3×1051\l ...

  7. CF757F-Team Rocket Rises Again【最短路,DAG支配树】

    正题 题目链接:https://www.luogu.com.cn/problem/CF757F 题目大意 nnn个点mmm条边的一张无向图,求删除sss以外的一个点改变sss到最多点的最短路. 解题思 ...

  8. P2597-[ZJOI2012]灾难【DAG支配树】

    正题 题目链接:https://www.luogu.com.cn/problem/P2597 题目大意 nnn个点的一张DAGDAGDAG,对于每个点xxx求有多少点yyy满足从yyy出发到达某个出度 ...

  9. 支配树(洛谷-P5180)

    题目描述 给定一张有向图,求从1号点出发,每个点能支配的点的个数(包括自己) 输入输出格式 输入格式: 第一行两个正整数n,mn,m,表示点数和边数 接下来mm行,每行输入两个整数u,vu,v,表示有 ...

最新文章

  1. 与smart_Smart超纯水系统及原理
  2. 3.1.3 awk命令用法
  3. vmware ubuntu 虚拟机每次启动都蓝屏怎么办?
  4. Jquery中获取表单提交时不确认个数元素的个数与值的方法
  5. 完整适配LUCI界面的Openwrt中EC20的QMI拨号
  6. serialVersionUIDtransient
  7. oracle回滚段空间满了,Oracle回滚段表空间文件丢损怎样处理?
  8. 什么是网络单纯型算法
  9. 通过设置proxyTable实现调用接口跨域
  10. python如何预测双色球信息_python预测下一期双色球号码【机器学习】
  11. android电视psp模拟器,PSP模拟器(PPSSPP) for Android平板电脑图文教程
  12. 苏州大学计算机专业考研报录比,【图片】18年苏州大学计算机872考研经验分享【苏州大学研究生吧】_百度贴吧...
  13. 软件版本 —— Alpha、Beta、RC版本的区别
  14. 【Nape教程】认识Nape空间
  15. Kanzi学习之路(6):属性绑定
  16. 达梦使用powerdesigner生成er模型图
  17. 常用颜色16进制、3原色对照
  18. function函数的基本方法:
  19. 2020年总结与展望
  20. 自考计算机可以考研的学校,自考成功后想考研,这五个问题你了解清楚了吗?...

热门文章

  1. python基础教程-《Python基础教程(第3版)》PDF高清版
  2. 为什么黑客都用python-为什么黑客都用python Python在各领域都有着广
  3. python基础代码大全-Python基础汇总
  4. python程序员月薪-据说做Python程序员,都月薪上万?
  5. ICRoute 语音识别芯片/声控芯片 用声音去沟通 LD332X系列语音识别芯片
  6. php json 小红点,关于PHP的json_encode的一个小技巧
  7. slice,substr,substring三者的区别
  8. JavaScript面向对象之Function类型
  9. Vue-注册全局组件的两种方法
  10. php redis hgetall 慢,redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)