F

题意:
就是给你一个有向图,没有自环和重边,现在定义一个点如果可以从这里出发然后无穷尽的走下去,那么就是好点,问你有多少好点。

思考:
所谓的好点就是可以走到环里面去,所以就是找环了,如果染色找的话不太好操作,发现这里是有向图,又是环,很快想到了缩点,把环缩一块,然后哪些可以走到这些缩点的也是好点,那么现在就是如何把所有的好点找出来。先判断有环的缩点,就是这个缩点的个数>=2,所以再建立一次边,跑一次反向dp,也就是当前如果为好点,那么他走到的点也是号点,即可。

代码:

int T,n,m,k;
int va[N];
int dfn[N],low[N],vis[N],deep;
int cnt[N],col[N],sum;
int in[N],can[N];stack<int > s;
vector<int > e[N],v[N];void dfs(int now)
{dfn[now] = low[now] = ++deep;s.push(now);vis[now] = 1;for(auto spot:e[now]){if(dfn[spot]==0){dfs(spot);low[now] = min(low[now],low[spot]);}else if(vis[spot]) low[now] = min(low[now],dfn[spot]);}if(dfn[now]==low[now]){col[now] = ++sum;while(1){int x = s.top();s.pop();vis[x] = 0;col[x] = sum;cnt[sum]++;if(x==now) break;}}
}void topsort()
{queue<int > q;for(int i=1;i<=sum;i++){if(cnt[i]>=2) can[i] = 1;if(!in[i]) q.push(i);}while(q.size()){auto now = q.front();q.pop();for(auto spot:v[now]){can[spot] |= can[now];if(--in[spot]==0) q.push(spot);}}
}signed main()
{IOS;cin>>n>>m;for(int i=1;i<=m;i++){int a,b;cin>>a>>b;e[a].pb(b);}for(int i=1;i<=n;i++) if(!dfn[i]) dfs(i);for(int i=1;i<=n;i++){for(auto j:e[i]){if(col[i]!=col[j]){v[col[j]].pb(col[i]);in[col[i]]++;}}}topsort();int anw = 0;for(int i=1;i<=sum;i++) if(can[i]) anw += cnt[i];cout<<anw;return 0;
}

总结:
多多思考。

ABC-Endless Walk-(缩点+拓扑dp)相关推荐

  1. 洛谷P4742(tarjan缩点+拓扑DP)

    https://www.luogu.org/problemnew/show/P4742 题目背景 [Night - 20:02[Night−20:02 P.M.]P.M.] 夜空真美啊--但是--快要 ...

  2. BZOJ 1924 [Sdoi2010]所驼门王的宝藏 tarjan缩点+拓扑DP

    题意: 一个r*c的图中,有n个宫殿. 每个宫殿有一个类型. 类型1:可以到达他所在的行的任意宫殿. 类型2:可以到达他所在的列的任意宫殿. 类型3:可以到达他四周八个格子的任意宫殿. 现在你从任意一 ...

  3. (纪中)4253. QYQ在艾泽拉斯【Tarjan】【拓扑DP】

    解题思路 题目大意是给你一个有向图,选择 k + 1 k+1 k+1个能获取最大价值的联通块的价值总和. 显然 T a r j a n 缩 点 + 拓 扑 D P Tarjan缩点+拓扑DP Tarj ...

  4. P3387 【模板】缩点 (Tarjan + 拓扑 + dp)

    题目链接 题目分析 题目要求出一条路径,保证此路径经过的所有点的权值和最大,并且每个点可以重复走,但是权值只计算一次,因此对于每一个强连通分量可以看作一个缩点,然后求对这些缩点拓扑排序(目的是为了后面 ...

  5. Codeforces Round #374 (Div. 2) A , B , C 水,水,拓扑dp

    A. One-dimensional Japanese Crossword time limit per test 1 second memory limit per test 256 megabyt ...

  6. 【codevs2131】【BZOJ1924】所驼门王的宝藏,tarjan+拓扑DP

    Time:2016.06.01 Author:xiaoyimi 转载注明出处谢谢 传送门1 传送门2 思路: 比较简单 使用规则建出一个包含N个点的无向图来,然后tarjan,得到重构后的有向无环图, ...

  7. 来自wzc的简单拓扑dp

    来自wzc的简单拓扑dp(拓扑DP) 题目已经把解决方案给你了,就是拓扑DP(出题人这回没有耍你,真的) 不过我还是莽了两发dijk贪心QAQ,果然错了(毕竟DP弱者,巨贪心)- 正片开始 有向图拓扑 ...

  8. 来自wzc的简单拓扑dp———浙江农林大学第二十届程序设计竞赛暨团体程序设计天梯赛选拔赛(同步赛)

    传送门 题目描述 (良心出题人wzc说这是个简单拓扑dp,它就必然是一个简单拓扑dp,wzc是不会骗人的) wzc在一张拓扑图上,他所在的起始位置被标记为0.除了起始位置外,还有被1到n这n个整数所标 ...

  9. Jzoj P4253 QYQ在艾泽拉斯___强连通分量缩点+拓扑序dp

    题目大意: Q Y Q QYQ QYQ有 K K K次技能,每次可以从一个岛屿上闪现到另外一个岛屿上,每一个岛屿只能登上一次. Q Y Q QYQ QYQ能从任何一个城市开始旅程,也能在任何一个城市结 ...

  10. CodeForces - 1547G How Many Paths?(强联通缩点+拓扑)

    题目链接:点击查看 题目大意:给出一张有向图,无重边,有环,现在需要判断每个点和点 111 的关系: 000:点 111 无法到达点 uuu 111:点 111 到点 uuu 有且仅有一条路径 222 ...

最新文章

  1. 深入理解Spring系列之六:bean初始化
  2. c#语言中代替指针,如何在C#中使指针通用?
  3. 用科幻艺术描绘未知的魅力-环境篇
  4. buffer和cache怎么让你们解释的那么难理解?
  5. 10行代码AC——7-2 说反话-加强版 (20 分)——解题报告
  6. 【渝粤教育】国家开放大学2018年秋季 2083T信息技术与教育技术(2) 参考试题
  7. mybatis学习(25):分页3 多参数传递(使用map)
  8. 除非 Windows Activation Service (WAS)和万维网发布服务(W3SVC)均处于运行状态,否则无法启动网站。IIS 7...
  9. virtualbox linux 挂载u盘,Ubuntu 10.04 在Virtualbox 虚拟机上挂载U盘
  10. 软件技术债务是什么_为什么我爱技术债务
  11. 一个强大的粘性标签库
  12. windows和linux 修改 hosts的路径
  13. I.MX6 U-boot Kernel backlight setting
  14. Unique Email Addresses
  15. photoshop 快捷键_PhotoShop快捷键一览
  16. 观《达芬奇的人生密码》有感——艺工交叉的智慧
  17. MacBook的分屏
  18. javascript 数据类型与类型转换
  19. 【论文阅读笔记】Deep neural networks are easily fooled- High confidence predictions for unrecognizable image
  20. 中国石油大学《混凝土》第二阶段在线作业

热门文章

  1. 青出于蓝胜于蓝 (dfs序 + BIT)
  2. amc 美国数学竞赛能用计算机吗,关于AMC美国数学竞赛的QA
  3. 廊坊金彩教育:拼多多运营方案
  4. wordpress快速删除垃圾评论和关闭评论
  5. 搭建MYS-SAM9X5开发环境
  6. THUSC2019:Illusory World
  7. 记录String.valueOf()和toString()注意问题
  8. Vim Instruction Vim 指南
  9. 分子动力学模拟自由能计算gmx_mmpbsa脚本原理和使用
  10. (28)部署强命名程序集到GAC