2021-09-211547G - How Many Paths?
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
using namespace std;
typedef long long ll;const int N=4e5+10,M=1e6+10,mod=998244353;int h[N],hs[N],e[M],ne[M],idx=0; // h 原图 hs新图
void add(int h[],int a,int b){e[idx]=b;ne[idx]=h[a];h[a]=idx++;return ;}int timestamp,scc_cnt,id[N],siz[N];
int dfn[N],low[N],st[M],tt=-1; // tarjan
bool dis[N],D[N]; // D 是 是否有无穷条; int in[N],T[N]; // in是 路径数量 T是新图入度; void tarjan(int u) // tarjan板子 ;好长
{dfn[u]=low[u]=++timestamp;st[++tt]=u;dis[u]=1;for(int i=h[u];~i;i=ne[i]){int t=e[i];if(!dfn[t]){tarjan(t);low[u]=min(low[u],low[t]);}else if(dis[t])low[u]=min(low[u],dfn[t]);}if(low[u]==dfn[u]){++scc_cnt;int y;do{y=st[tt--];id[y]=scc_cnt;dis[y]=0;siz[scc_cnt]++;}while(y!=u);}
}void bfs(int u)
{tt=-1;st[++tt]=u;in[u]=1;while(tt>=0){int x=st[tt--]; for(int i=hs[x];~i;i=ne[i]){int t=e[i];T[t]--;D[t]|=D[x]; if(in[t]<2)in[t]+=in[x]; if(!T[t])st[++tt]=t;}}
}int main()
{int t;scanf("%d",&t);while(t--){int n,m;scanf("%d%d",&n,&m);idx=timestamp=scc_cnt=0;tt=-1;for(int i=0;i<=n;i++)T[i]=in[i]=siz[i]=dis[i]=dfn[i]=low[i]=id[i]=0,h[i]=hs[i]=-1;while(m--){int a,b;scanf("%d%d",&a,&b);add(h,a,b);}tarjan(1);for(int i=1;i<=n;i++)for(int x=h[i];~x;x=ne[x]){int l=id[i],r=id[e[x]];if(i==e[x])siz[l]++; // 自环 if(l==r)continue;add(hs,l,r);if(l)T[r]++;//要加这行 因为l=0不在新图里面; }for(int i=1;i<=scc_cnt;i++)D[i]=siz[i]>1;bfs(id[1]); for(int i=1;i<=n;i++){int ID=id[i],ans=0;if(ID) {if(D[ID])ans=-1;else ans=in[ID]>1?2:1;}printf("%d ",ans);}puts("");}return 0;
}void add_(int &a,ll b){a=((a+b)%mod+mod)%mod;return;}
2021-09-211547G - How Many Paths?相关推荐
- 橘子CPS联盟操作手册2021.09
橘子CPS联盟操作手册2021.09 目录 橘子CPS联盟操作手册2021.09 橘子CPS联盟是干嘛的 橘子CPS基本操作流程 PC端操作 1.注册 2.登陆 3.渠道管理 4.分享网站 5.分享网 ...
- 2021.09.27 MySQL笔记
2021.09.27 MySQL笔记 文章目录 2021.09.27 MySQL笔记 一.展示当前存在的所有数据库 二.使用(选中)一个数据库 三.创建一个数据表 四.查询并展示该数据库内的所有数据表 ...
- 实习日志 (2021.09.13)
2021.09.13星期一 今天把之前的算法题终于给弄明白了,并能够按照自己的思路去把他给完成,总结这个题目并不是很难,最重要的是要把链表给弄懂,一开始由于我对链表不是很熟悉,导致我在写该题目的时候花 ...
- 2021.09青少年软件编程(Python)等级考试试卷(三级)
2021.09青少年软件编程(Python)等级考试试卷(三级) 一.单选题(共25题,每题2分,共50分) 1.使用map函数可以实现列表数据元素类型的转换,而无需通过循环.则将列表L=['1',' ...
- 2021.09.24—皮皮与帅帅的第二篇情话
2021.09.24我们小情书的第二天 每天晚上,小兔子都会一个人来到溪水边,坐在地上数着星星.而且他个人也非常喜欢一闪一闪的东西.对于小兔子来说,每颗星星都是特别的,于是她就给每颗星星都起了一个可爱 ...
- 《惢客创业日记》2021.09.15(周三)套路的最高境界
今天,凉粉儿给我发了一段她想的关于惢客的宣传词:"你被套路过吗?想不再被套路吗?上惢客."总结一句话是"不被套路上惢客".我觉得能把惢客跟套路联系在一起,很贴切 ...
- Go 1.18将原生支持fuzz test | Gopher Daily (2021.09.21) ʕ◔ϖ◔ʔ
每日一谚:Clear is better than clever. Go技术生态 Go 1.18合并了对Fuzz测试原生支持的代码 - https://github.com/golang/go/com ...
- 2021.09.27-10.3 AI行业周刊(第65期):坚持的力量
本周话题:坚持的力量 国庆节花费了13个小时,从无锡开车回老家. 原本只需要4个小时,结果生生的开了一天,虽然很累,但是回家乡的执念一直在坚持. 开车回家的一路上,一直在回想这些年坚持做的很多事情: ...
- 详解即将于Go 1.18加入的Go泛型特性 | Gopher Daily (2021.09.27) ʕ◔ϖ◔ʔ
每日一谚:use errors.Is(err, pkg.ErrFoo) rather than err == pkg.ErrFoo. Go技术生态 详解即将于Go 1.18加入的Go泛型特性 - ht ...
- Go程序内存泄露问题快速定位 | Gopher Daily (2021.09.01) ʕ◔ϖ◔ʔ
每日一谚:Less is more. Go技术生态 github针对go仓库提供免费的持续benchmark服务 - https://github.com/marketplace/gobencher ...
最新文章
- manjaro 火焰截图添加快捷键_Linux中功能强大的截图工具 - Flameshot
- Sharepoint学习笔记--Farm Backup Error:Administration 2010 Service is not started
- java ssssss_Java 时间字符串(HH:mm:ss.SSS) 转换成毫秒(milliseconds)
- Linux常用编辑器使用:vi、vim、nano、gedit
- 创新正当时 -「Innovation 2021」网易应用创新开发者大赛决赛十强正式集结
- 经典C语言程序100例之三零
- python中元组可以比较大小吗_python元组比较
- 产品认知:真正厉害的产品经理,都是“本质思维”的高手
- anaconda来创建python环境
- 有问有答 | AWS使用精华问答,带您开启 AWS 上的云计算之旅!
- Create React App 2.0 华丽登场
- RK3368-android8.1-每天凌晨3点自动重启机器
- 机器学习 -- 初识决策树
- 软件工程导论——软件维护
- matlab中axis square与axis equal区别
- MicroBlaze系列教程(2):AXI_INTC的使用
- mysql报1142错误
- Java保留两位小数的方法
- 蒙提霍尔问题:上帝视角 + 暴力数学
- 【Scikit-Learn 中文文档】13 集成方法 - 监督学习 - 用户指南 | ApacheCN
热门文章
- 可编程的智能小车,100种玩法,让孩子玩出理科编程思维
- 如何用Java讲一句话重复五遍_Java 0515 第二次课作业
- python eval函数_Python eval 函数妙用
- 频谱分析幅值单位_案例分享丨某水泥厂入窑斗提减速机不对中故障分析及处理...
- linux aemv7,无法在我的Ubuntu machin中安装“xlwings”
- fb静态区域_fb 静态数据
- mysql使用索引下推的好处_mysql的索引下推理解和实践
- 完美国际真数苹果_如果给你推荐一款很贵,但好用的苹果手机壳,你会买吗?...
- python迅雷_迅雷下载链接解析器。
- linux gcc出错,编译arm-linux-gcc出错