HDU 4694: Important Sisters(支配树)
题意:
御坂和她的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(支配树)相关推荐
- Lengauer-Tarjan算法--支配树构造(bzoj 2815: [ZJOI2012]灾难)
模型: 一个有向图G,设定一个点r,要求点r能到达G中所有的点,如果这样的点不存在,新建并向所有入度为0的点连边 支配点: 对于点u,如果在删掉点p之后,r不能到达u,那么称p(p!=u)点是u点的一 ...
- [ACM] hdu 1671 Phone List (字典树)
[ACM] hdu 1671 Phone List (字典树) Phone List Problem Description Given a list of phone numbers, determ ...
- HDU4694 Important Sisters
支配树 其实还是一道支配树板子题.. 最后在树上dfs统计一下点到根的信息就行啦- #include <bits/stdc++.h> #define INF 0x3f3f3f3f #def ...
- hihocoder #1343 : Stable Members(支配树)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Recently Little Hi joined an algorithm learning group. The gr ...
- 【学习笔记】DAG / 一般有向图的支配树 / 灭绝树
定义与声明 一个有向图 GGG.给定一个起点 sss,假设 sss 能到达所有点. 若去掉某个点 iii 后,sss 无法到达 jjj,则称 iii 为 jjj 的支配点. 显然支配点存在传递关系. ...
- P5180-[模板]支配树
正题 题目链接:https://www.luogu.com.cn/problem/P5180 题目大意 给出nnn个点的一张有向图,求每个点支配的点数量. 1≤n≤2×105,1≤m≤3×1051\l ...
- CF757F-Team Rocket Rises Again【最短路,DAG支配树】
正题 题目链接:https://www.luogu.com.cn/problem/CF757F 题目大意 nnn个点mmm条边的一张无向图,求删除sss以外的一个点改变sss到最多点的最短路. 解题思 ...
- P2597-[ZJOI2012]灾难【DAG支配树】
正题 题目链接:https://www.luogu.com.cn/problem/P2597 题目大意 nnn个点的一张DAGDAGDAG,对于每个点xxx求有多少点yyy满足从yyy出发到达某个出度 ...
- 支配树(洛谷-P5180)
题目描述 给定一张有向图,求从1号点出发,每个点能支配的点的个数(包括自己) 输入输出格式 输入格式: 第一行两个正整数n,mn,m,表示点数和边数 接下来mm行,每行输入两个整数u,vu,v,表示有 ...
最新文章
- 与smart_Smart超纯水系统及原理
- 3.1.3 awk命令用法
- vmware ubuntu 虚拟机每次启动都蓝屏怎么办?
- Jquery中获取表单提交时不确认个数元素的个数与值的方法
- 完整适配LUCI界面的Openwrt中EC20的QMI拨号
- serialVersionUIDtransient
- oracle回滚段空间满了,Oracle回滚段表空间文件丢损怎样处理?
- 什么是网络单纯型算法
- 通过设置proxyTable实现调用接口跨域
- python如何预测双色球信息_python预测下一期双色球号码【机器学习】
- android电视psp模拟器,PSP模拟器(PPSSPP) for Android平板电脑图文教程
- 苏州大学计算机专业考研报录比,【图片】18年苏州大学计算机872考研经验分享【苏州大学研究生吧】_百度贴吧...
- 软件版本 —— Alpha、Beta、RC版本的区别
- 【Nape教程】认识Nape空间
- Kanzi学习之路(6):属性绑定
- 达梦使用powerdesigner生成er模型图
- 常用颜色16进制、3原色对照
- function函数的基本方法:
- 2020年总结与展望
- 自考计算机可以考研的学校,自考成功后想考研,这五个问题你了解清楚了吗?...
热门文章
- python基础教程-《Python基础教程(第3版)》PDF高清版
- 为什么黑客都用python-为什么黑客都用python Python在各领域都有着广
- python基础代码大全-Python基础汇总
- python程序员月薪-据说做Python程序员,都月薪上万?
- ICRoute 语音识别芯片/声控芯片 用声音去沟通 LD332X系列语音识别芯片
- php json 小红点,关于PHP的json_encode的一个小技巧
- slice,substr,substring三者的区别
- JavaScript面向对象之Function类型
- Vue-注册全局组件的两种方法
- php redis hgetall 慢,redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)