宝石收集,tarjan

0宝石收集 - 蓝桥云课 (lanqiao.cn)

n=int(input())
s='0'+input()
m=int(input())
mp=[[] for i in range(n+1)]
for i in range(m):a,b=map(int,input().split())a+=1b+=1mp[a].append(b)import sys
sys.setrecursionlimit(100000000)
dfn=[0 for i in range(n+1)]
low=[0 for i in range(n+1)]
cnt=0stk=[]
instk=[0 for i in range(n+1)]p=0
scc=[0 for i in range(n+1)]def tarjan(x):global cnt,pcnt+=1dfn[x]=low[x]=cntstk.append(x)instk[x]=1for i in mp[x]:if dfn[i]==0:tarjan(i)low[x]=min(low[x],low[i])elif instk[i]:low[x]=min(low[x],dfn[i])if dfn[x]==low[x]:p+=1y=stk.pop()instk[y]=0scc[y]=pwhile x!=y:y = stk.pop()instk[y] = 0scc[y] = p
for i in range(1,n+1):if dfn[i]==0:tarjan(i)del instk,low,dfnru=[0 for i in range(p+1)]
h=[0 for i in range(p+1)]
l=[0 for i in range(p+1)]
nmp=[[] for i in range(p+1)]
for i in range(1,n+1):if s[i]=='0': h[scc[i]]+=1else : l[scc[i]]+=1for j in mp[i]:if scc[i]!=scc[j]:ru[scc[j]]+=1nmp[scc[i]].append(scc[j])
del mpdef dfs(x,a,b):ans=0vis=0for y in nmp[x]:ans=max(dfs(y,a+h[y],b+l[y]),ans)vis=1if vis==0:return min(a,b)else:return ans
ans=0
for i in range(1,p+1):if ru[i]==0:ans=max(ans,dfs(i,h[i],l[i]))
print(ans)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML与CSS的学习

什么是HTML,CSS&#xff1f; HTML(HyperText Markup Language):超文本标记语言。 超文本:超越了文本的限制&#xff0c;比普通文本更强大。除了文字信息&#xff0c;还可以定义图片、音频、视频等 标记语言:由标签构成的语言 >HTML标签都是预定义好的。例如:使用<a>…

c语言:模拟strlen(三种方法)最全版本

1.计数的方法 #include <stdio.h> #include <assert.h> int my_strlen(const char * str)//const的使用优化 {int count0;assert(str)while(*str){count;str;}return count; } 2.用指针的方法&#xff08;指针-指针&#xff09; #include <stdio.h> #incl…

Visual Studio 的调试(一)

最近事儿很多昂&#xff0c;更新速度相较以往慢了许多&#xff0c;备考六月份的四级&#xff0c;还有学校的期末等等&#xff0c;事儿真的太多啦&#xff0c;所以后面的更新速度也会放慢一点&#xff0c;实在是抽不开身啊诸位&#xff0c;相当抱歉&#xff0c;还望诸君见谅 言…

简述Vue 如何检测数组变化

Vue 2.0 在检测数组变化时&#xff0c;由于 JavaScript 的限制&#xff08;Object.defineProperty 不能直接用于数组元素&#xff09;&#xff0c;它采用了特殊的策略来跟踪数组的变更。以下是 Vue 2.0 检测数组变化的主要方法&#xff1a; 数组方法重写&#xff1a; Vue 重写了…

MySQL大表删除方案

1.问题 在生产环境中&#xff0c;执行大表删除操作时&#xff0c;很容易因为占用了大量io资源导致其他事务被阻塞&#xff0c;最终事务不断堆积导致MySQL挂掉。 2.drop命令 drop命令&#xff0c;MySQL主要干了两件事&#xff1a; 清除buffer pool缓冲&#xff08;内存&…

STL源码刨析:序列式容器之vector

目录 1.序列式容器和关联式容器 2.vector的定义和结构 3.vector的构造函数和析构函数的实现 4.vector的数据结构以及实现源码 5.vector的元素操作 前言 本系列将重点对STL中的容器进行讲解&#xff0c;而在容器的分类中&#xff0c;我们将容器分为序列式容器和关联式容器。本章…

go语言初识(四)

本博客涉及内容&#xff1a;数组 数组 数组定义 在 go 语言中&#xff0c;数组是一种固定大小的数据结构&#xff0c;用于存储相同类型的元素。数组的定义方式如下&#xff1a; var arrayName [size]Type可以通过len()函数测试数组的长度&#xff1a; func main() {var a …

二.对配置文件中数据库密码进行加密

代码&#xff1a; public class DruidEncryptUtils {private static String publicKey;private static String privateKey;static {try {String[] keyPair ConfigTools.genKeyPair(512);privateKey keyPair[0];System.out.println("privateKey:"privateKey);publi…

Docker Hub注册及上传自定义镜像

说明&#xff1a;本文介绍如何注册Docker Hub&#xff0c;及将自己自定义镜像上传到Docker Hub上&#xff1b; 注册Docker Hub 浏览器输入&#xff1a;http://hub.docker.com/&#xff0c;进入Docker Hub官网 注&#xff1a;如果无法访问&#xff0c;可在GitHub上下载一个Ste…

Git--本地仓库

文章目录 工作区和暂存区工作区&#xff08;Working Directory&#xff09;版本库&#xff08;Repository&#xff09; 初始化git仓库添加文件到版本库步骤 查看修改内容查看工作区和暂存区状态已add文件已修改/新增 的未add文件git跟踪修改原理 查看提交历史版本回退撤销修改撤…

如何解决Redis缓存雪崩问题?

解决Redis缓存雪崩问题,可以从多个方面入手来确保系统在高并发和缓存失效时能够保持稳定运行。以下是一些具体的解决策略: 合理设置缓存过期时间: 避免大量缓存设置相同的过期时间,这样会导致在某一时刻缓存同时失效,造成缓存雪崩。可以使用Redis的EXPIRE命令或TTL命令,结…

白话文docker-002

第三章&#xff1a;Docker镜像的使用与管理 引言 Docker镜像是Docker生态中的核心组件&#xff0c;它们是轻量级的、可执行的软件包&#xff0c;包含了运行一个应用所需的所有内容。在本章中&#xff0c;我们将深入探讨如何创建和修改Dockerfile来构建镜像&#xff0c;获取、…

python基础(1) -- 基本数据类型与变量

基本数据类型与变量 1.1注释 优点&#xff1a; 1.代码说明 2.不让解释器执行注释的那句话 1.1.1 单行数据 语法&#xff1a; # #开头后面都是注释&#xff0c;python解释器会忽略掉注释 单行注释快捷键&#xff1a;ctrl&#xff1f;1.1.2 多行注释 """ &qu…

信息学奥赛初赛天天练-12-数论-整除问题

更多资源请关注纽扣编程微信公众号 整除的性质 1 整除性 若 &#x1d44e; 和 &#x1d44f; 都为整数&#xff0c; &#x1d44e; 整除 &#x1d44f; 是指 &#x1d44f; 是 &#x1d44e; 的倍数&#xff0c;&#x1d44e; 是 &#x1d44f; 的约数&#xff08;或者叫 因…

Vue 2与Vue 3的区别

1. 生命周期函数 Vue 2中的生命周期钩子以.created(), .mounted(), .updated()等形式存在&#xff0c;而在Vue 3中&#xff0c;这些钩子函数被重构为更符合Composition API的设计理念&#xff0c;使用了新的命名约定&#xff0c;如onBeforeMount, onMounted, onUpdated等。此外…

基于Arduino IDE的ESP32开发环境搭建

文章目录 一. Arduino IDE安装二. Arduino IDE安装ESP开发包 一. Arduino IDE安装 Arduino官网下载IDE软件 解压下载好的安装包&#xff0c;以管理员身份运行Arduino IDE软件 IDE第一次启动会安装各种驱动&#xff0c;直接点击确定就行 二. Arduino IDE安装ESP开发包 将…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-22讲 RTC 时钟设置

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

头歌结构化分析方法-数据流图

第1关&#xff1a;数据流图-画出外部实体 第2关&#xff1a;数据流图-画出加工 第3关&#xff1a;数据流图-画出数据存储 第4关&#xff1a;数据流图-画出数据流 第5关&#xff1a;数据流图-机票预定系统

【Python】 使用SMOTE解决数据不平衡问题

原谅把你带走的雨天 在渐渐模糊的窗前 每个人最后都要说再见 原谅被你带走的永远 微笑着容易过一天 也许是我已经 老了一点 那些日子你会不会舍不得 思念就像关不紧的门 空气里有幸福的灰尘 否则为何闭上眼睛的时候 又全都想起了 谁都别说 让我一个人躲一躲 你的承诺 我竟然没怀…