http://www.lydsy.com/JudgeOnline/problem.php?id=1589

tarjan缩环后拓扑排序上DP

#include<cstdio>
#include<iostream>
#include<algorithm>#define N 100001using namespace std;int to[N];int m;
int bl[N],siz[N];int st[N],top;
int id,dfn[N],low[N];
bool vis[N];int FRONT[N],TO[N],NXT[N],TOT;
int in[N];int dp[N];void read(int &x)
{x=0; char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }
}void tarjan(int x)
{dfn[x]=low[x]=++id;vis[x]=true;st[++top]=x;if(!dfn[to[x]]){tarjan(to[x]);low[x]=min(low[x],low[to[x]]);}else if(vis[to[x]]) low[x]=min(low[x],dfn[to[x]]);if(dfn[x]==low[x]){++m;while(st[top]!=x) {vis[st[top]]=false;bl[st[top]]=m;siz[m]++;top--;}vis[x]=false;bl[x]=m;siz[m]++;top--;}
}void add(int u,int v)
{TO[++TOT]=v; NXT[TOT]=FRONT[u]; FRONT[u]=TOT;in[v]++;
}void topsort()
{top=0;for(int i=1;i<=m;++i){if(!in[i]) st[++top]=i;dp[i]=siz[i];} int now,t;while(top){now=st[top--];for(int i=FRONT[now];i;i=NXT[i]){t=TO[i];dp[t]+=dp[now];in[t]--;if(!in[t]) st[++top]=t;}}
}int main()
{int n;read(n);for(int i=1;i<=n;++i) read(to[i]);for(int i=1;i<=n;++i)if(!dfn[i]) tarjan(i);for(int i=1;i<=n;++i)if(bl[i]!=bl[to[i]]) add(bl[to[i]],bl[i]);topsort();for(int i=1;i<=n;++i) cout<<dp[bl[i]]<<'\n';
}

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8142648.html

bzoj千题计划161:bzoj1589: [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果相关推荐

  1. BZOJ 2150. 部落战争(最小路径覆盖问题)【BZOJ千题计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 刷题就图一乐 题目链接 https://hydro.ac/d/bzoj/p/2150 是 hydro ...

  2. BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2151 是 hydro 的 BZOJ ...

  3. BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...

  4. bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼

    http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...

  5. bzoj千题计划207:bzoj1879: [Sdoi2009]Bill的挑战

    http://www.lydsy.com/JudgeOnline/problem.php?id=1879 f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数 枚举下一个字符是什么 计算加 ...

  6. bzoj千题计划203:bzoj3994: [SDOI2015]约数个数和

    http://www.lydsy.com/JudgeOnline/problem.php?id=3994 设d(x)为x的约数个数,给定N.M,求 用到的一个结论: 证明: 枚举n的约数i,枚举m的约 ...

  7. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  8. bzoj千题计划201:bzoj1820: [JSOI2010]Express Service 快递服务

    http://www.lydsy.com/JudgeOnline/problem.php?id=1820 很容易想到dp[i][a][b][c] 到第i个收件地点,三个司机分别在a,b,c 收件地点的 ...

  9. bzoj千题计划303:bzoj4827: [Hnoi2017]礼物

    https://www.lydsy.com/JudgeOnline/problem.php?id=4827 式子化简一下,发现最后只跟 Σ xi*yi 有关 第二个序列反转,就可以用FFT优化 注意: ...

最新文章

  1. KD树是什么? 为什么要用KD树? KD树怎么用? KD树和KNN的关联是什么?
  2. 如何设置采购收货直接转到供应商库存?
  3. Oracle错误 1053: 该服务没有响应启动或控制请求
  4. 机器学习之数学基础(一)~maximum likelihood
  5. Fabric 学习笔记-架构初探
  6. 广州技术沙龙第 4 期报名开始!
  7. 睡前必读 | 如何系统性地学习分布式系统?
  8. Hbase的WebUI中的RegionServers不显示集群机器域名
  9. [XSY4197] Snow(树形DP)
  10. WPS Excel VB宏简单编程
  11. 2022-2027年中国电容器行业市场全景评估及发展战略规划报告
  12. TPC,TPCC,TPMC(数据库性能衡量指标)
  13. php-fpm 启动失败,php-fpm自启动失败问题排查
  14. 织梦高端婚纱摄影网站织梦模板(带手机端
  15. SOLIDWORKS中如何使用配置创建系列零件
  16. 集成声网(Agora)SDK踩坑集锦系列
  17. Modernizr的介绍和使用
  18. 学生宿舍管理项目开发计划书_1学生信息管理系统项目开发计划书
  19. 神经网络CNN(学习总结)
  20. 如何在Android手机上退出Google帐号

热门文章

  1. 区块链学堂(4):以太坊基本概念及工具Geth、Browser-solidity、Mist
  2. Double Free浅析
  3. mach-o格式分析
  4. android电视打印信息解析,液晶电视获取打印信息的方法与操作
  5. win32按钮按下不弹起_荣耀亲选智能恒温电热水壶,宝爸冲奶粉再也不做难了
  6. 禁用cookie后怎么使用session_Session 和 Cookie 的区别?你在项目中哪些地方使用了?...
  7. google reader很有用的技巧 F+F11
  8. [USACO08JAN]跑步Running
  9. 线段树的数组大小下限及证明
  10. java环境变量修改不了_win10系统安装了jdk,修改环境变量配置不生效的解决方法...