性质:跑tarjan时 每次push_back(s[tp])就可以得到不缩点的反拓扑序。

传送门:J.Serval and Essay

题意:给你一个图,可以选定任意的起点st(st入度可以不为0)。从u到达v后,u会被删除。u能够到达v 当且仅当 v的入度为1(到达v后 v的入度为0),求最多可以到达多少个点。

分析:在一个环中的都不一定能全取,缩点不行。考虑tarjan求出拓扑序后枚举起点。

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
// #define int __int128
#define pii pair<int,int>
#define endl '\n'//交互题需要endl刷新//
const int maxn=1e6+5;
vector<int>e[maxn];
int x[maxn],y[maxn];int dfn[maxn],low[maxn],s[maxn],instk[maxn],tp;
int scc[maxn],sc;//节点i所在的scc编号
int sz[maxn];//scc大小
int dfncnt;int ind[maxn];
int vis[maxn];int ct;vector<int>ord;void tarjan(int u)
{low[u]=dfn[u]=++dfncnt,s[++tp]=u,instk[u]=1;for(auto v:e[u]){if(!dfn[v]){tarjan(v);low[u]=min(low[u],low[v]);}else if(instk[v]){low[u]=min(low[u],dfn[v]);}}if(dfn[u]==low[u]){++sc;while(1){scc[s[tp]]=sc;sz[sc]++;ord.push_back(s[tp]);//记录不缩点的反向拓扑序instk[s[tp]]=0;--tp;if(s[tp+1]==u) break;}}
}void solve()
{int n;cin>>n;for(int i=1;i<=n;i++) e[i].clear(),sz[i]=dfn[i]=ind[i]=vis[i]=0;dfncnt=sc=tp=0;ord.clear();for(int i=1;i<=n;i++){int k;cin>>k;for(int j=1;j<=k;j++){int x;cin>>x;e[x].push_back(i);ind[i]++;}}for(int i=1;i<=n;i++){if(!dfn[i]) tarjan(i);}reverse(ord.begin(),ord.end());//翻转完是不缩点的拓扑序int maxx=0;for(auto st:ord)//枚举起点{if(vis[st]) continue;vector<int>q{st},ops;for(int i=0;i<q.size();i++)//每次重新计算q.size(),与auto不同{int u=q[i];vis[u]=1;for(auto v:e[u]) {if(v==st) continue;//环ops.push_back(v);if(--ind[v]==0) q.push_back(v);}}maxx=max(maxx,(int)q.size());//从st出发,最多有q.size()个点入度为0(算上st)for(auto v:ops) ind[v]++;}printf("Case #%lld: %lld\n",++ct,maxx);
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);int t=1;cin>>t;while(t--) solve();
}

J.Serval and Essay(tarjan求拓扑序)相关推荐

  1. QYQ在艾泽拉斯(并查集)(Tarjan)(拓扑序DP)

    QYQ在艾泽拉斯 题目大意 给你一个有向图,然后定义一个区域是将有向边看做无向边所形成的连通块. 然后你可以选 K+1 个区域,从任意点出发走到任意点. 然后点有点权,要你最大化点权和. 思路 看到有 ...

  2. tarjan+拓扑序+差分--2018.10.16模拟赛T2

    题目: 阿天住的城市有 n 个政府部门,这些部门之间用了 m 条有向路径 连接了起来.有趣的是,每过一天这些路径都会变换方向,也就是说, 偶数的日子和奇数的日子的图是不同的. 阿天在社保局工作,可惜他 ...

  3. 计蒜客-2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛H题Skiing(拓扑序求DAG最长路)

    题意: 给定一个有向无环图,求该图的最长路. 思路: 由于是有向无环图,所以最长路肯定是一个入度为0到出度为0的路径,拓扑序在确定当前点之前能够考虑到所有到它的情况,所以最后取个最值即可. 代码: # ...

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

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

  5. 解题报告:NOIP2013 车站分级(拓扑序递推求解差分约束、建图优化O(n+m)) 超详细讲解

    本题是2013年NOIP普及组的压轴题 差分约束裸题. 计算当前线路中最小的级别(比较始发站和终点站). 整条线路中所有大于这个级别的都必须停靠 所有未停靠的站点的级别一定小于这个级别 也就是说所有未 ...

  6. 【XSY3325】社保(拓扑序)

    显然我们先缩点,之后转化为一个 DAG,设为 GGG,设由其反边构成的图为 G′G'G′.题意就是求所有 "好的" 点,其中一个 "好的" 点需要满足这个点在 ...

  7. hdu3342 拓扑序

    题意:一个QQ群里面有一群大神,他们互相帮助解决问题,然后互相膜拜,于是有些人就称别人是他师父,现在给出很多师徒关系,问是否有矛盾 拓扑序,按师徒关系建边直接拓扑序就行了. 1 #include< ...

  8. Weights Assignment For Tree Edges 树,拓扑序(1500)

    题意 : 给定n个结点的树和序列bbb和ppp,bib_ibi​表示i结点的父节点,其中broot=rootb_{root}=rootbroot​=root,现在要给树上的每个边赋正权值,使得每个结点 ...

  9. 洛谷 - P3379 【模板】最近公共祖先(LCA)(RMQ求LCA/Tarjan求LCA)

    题目链接:点击查看 题目大意:给出一棵 n 个点组成的有根树,再给出 m 次询问,每次询问需要回答点 x 和点 y 的 lca 题目分析:今天新学了两种蛮有意思的求 LCA 的方法,总结一下四种方法各 ...

  10. UVA - 796 Critical Links(tarjan求割边)

    题目链接:点击查看 题目大意:给出一张由n个点组成的无向图,现在要求图中桥的数量 题目分析:tarjan求割边模板题,将边双缩点的模板删删减减就是这个题的模板了,注意有个比较坑的点,题目中的无向边会自 ...

最新文章

  1. java 画笔粗细_用JAVA做个画笔,有画笔和橡皮功能就行。越简单越好
  2. 使用memocache
  3. ASP.NET数据绑定的记忆碎片
  4. ●BZOJ 4453 cys就是要拿英魂!
  5. msiafterburner并行配置不正确_dubbo常用配置及使用场景
  6. Android MediaRecorder调用AudioRecord流程
  7. 轻松,高效,正确的写出一个爬虫?看这一篇就够了!踩过无数坑后总结的爬虫编写流程
  8. 在.NET开发中的单元测试工具之(2)——xUnit.Net
  9. testcookie-nginx-module
  10. Veritas Backup Exec备份软件服务器、客户端安装以及如何设置备份任务
  11. 被final关键字坑了
  12. 订单系统设计,消息队列幂等处理思路
  13. 【多目标进化优化】多目标进化群体的分布性
  14. 计算机中丢失d3dx9_30.dll,Win10不能玩《仙剑5》提示缺少d3dx9_30.dll的解决方法
  15. 【修炼五】用户需求系统需求
  16. 关于vite配置postcss未生效问题
  17. 【修复H5农场复利】黄金家园农场理财游戏源码Thinkphp开发 带商城仓库商店模块
  18. VDO-SLAM: A Visual Dynamic Object-aware SLAM System论文笔记
  19. redis1:概述、安装测试、基础知识、5大数据类型
  20. 如何制作经典的gif图

热门文章

  1. python读HDF数据
  2. 读《春秋》有感之十二:偪阳之战
  3. CNN with Attention---channal and spatial attention(转)
  4. 物联网(IoT)行业的决策管理应用
  5. 蓝桥杯单片机—— PCF8591的基本原理及A/D转换应用(14)
  6. 基于Java Servlet图片服务器
  7. Excel中Mac和Windows对绝对和相对引用的快速切换方式
  8. java 学习7.13 正则表达式 Pattern和Matcher类 Math类 Random类 System类 BigDecimal类 Date类 SimpleDateFormat类 Cale
  9. Helmetphone智能头盔上手体验,享受智能的运动骑行
  10. LOJ#2538. 「PKUWC2018」Slay the Spire