当前位置: 首页 > ops >正文

刻录光盘--和炸铁路,tarjan

https://www.luogu.com.cn/problem/P2835

多做多看多想,一切都会水到渠成

受欢迎的牛--tarjan缩点+图论出度-CSDN博客

#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
typedef pair<ll,int> pii;
int n,m; 
vector<int> mp[N];
int low[N],dfn[N],ne[N];
int cnt,c;
stack<int> st;
map<int,int> in;
map<int,int> an;
map<int,int> w;
void tarjan(int x)///tarjan板子 
{low[x]=dfn[x]=++cnt;st.push(x);for(int a:mp[x]){if(!dfn[a]){tarjan(a);low[x]=min(low[x],low[a]);}else if(!ne[a]){low[x]=min(low[x],low[a]);}}if(low[x]==dfn[x]){ne[x]=++c;while(st.top()!=x){ne[st.top()]=c;///ne是强连通分量数组 st.pop();}st.pop();//an这个map来统计强连通分量c里面的点数 }
}
ll ann;
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++){int y;while(cin>>y&&y){mp[i].push_back(y);}}for(int i=1;i<=n;i++){if(!dfn[i]){tarjan(i);}}for(int i=1;i<=n;i++){for(int a:mp[i]){if(ne[a]!=ne[i]){in[ne[a]]++;}}}for(int i=1;i<=c;i++){if(!in[i]) ann++;}cout<<ann;return 0;
}

http://www.xdnf.cn/news/6729.html

相关文章:

  • MGX:多智能体管理开发流程
  • 动态范围调整(SEF算法实现)
  • 在多个SpringBoot程序中./相对路径下隐患、文件覆盖问题
  • CSS- 2.1 实战之图文混排、表格、表单、学校官网一级导航栏
  • 基于51单片机和8X8点阵屏、矩阵按键的记忆类小游戏
  • C语言文件操作
  • 第八章 模板项目生成
  • Nextjs首屏加载速度性能从80分优化到98分
  • Qt控件:交互控件
  • PT2020 20触控I2C输出IC
  • 时频分析的应用—外部信号的显影和定点清除
  • 第三部分:内容安全(第十六章:网络型攻击防范技术、第十七章:反病毒、第十八章:入侵检测/防御系统(IDS/IPS))
  • 第J1周:ResNet-50算法实战与解析
  • C语言图案代码大全:从基础到高级
  • 院校机试刷题第四天:1911反转公约数、1702十六进制不进位加法
  • PR-2021
  • ADC深入——SNR、SFDR、ENOB等概念
  • 深入浅出拆分学习,图神经网络拆分学习,混合联邦学习
  • 网络攻防模拟:城市安全 “数字预演”
  • 14 C 语言浮点类型详解:类型精度、表示形式、字面量后缀、格式化输出、容差判断、存储机制
  • AlphaEvolve:基于Gemini的算法发现与优化综合报告
  • AI在线写作平台:AnKo引领未来创作新潮流!
  • 分析主流编程语言中哪些为支持面向对象的语言
  • 什么是实景VR?实景VR应用场景
  • 如何早期识别帕金森病?
  • 《图解 TCP/IP》笔记
  • 安科瑞DJSF1352-D直流电能表:破解充电桩计量难题
  • linux安装宝塔面板到数据盘
  • python Excel操作,将一个工作表中的sheet页复制到另一个工作表中(包括单元格的内容、样式、格式等)
  • 电动汽车直流快充充电桩AEV200-DC240M4的详细介绍