2024.7.4刷题记录

目录

一、846. 树的重心 - AcWing题库

二、847. 图中点的层次 - AcWing题库

三、848. 有向图的拓扑序列 - AcWing题库


观看教学视频写的代码。

一、846. 树的重心 - AcWing题库

N = int(1e5 + 5); M = N * 2
h = [-1] * N; e = [0] * M; ne = [0] * M
# h包含n个节点
idx = 0
st = [False for _ in range(N)]

def add(a, b):
    # 添加一条a到b的有向线
    global idx
    # 新建一个节点
    e[idx] = b
    ne[idx] = h[a]
    h[a] = idx
    idx += 1
    
R = lambda: map(int, input().split())
n, = R()
for _ in range(n - 1):
    a, b = R()
    # 无向图转换为有向图
    add(a, b)
    add(b, a)
    
# 返回以该节点u为子树的节点值
def dfs(u):
    global ans
    sum = 1
    res = 0     # 返回连通块节点数最大值
    
    st[u] = True    # 标记出发节点已经被搜过
    i = h[u]
    while i != -1:    # 链表不为空,有连接节点
        j = e[i]
        if not st[j]: 
            s = dfs(j)    # 遍历下一个节点
            res = max(res, s)   # 更新各连通块最大值
            sum += s    # 更新节点总数
        i = ne[i]   # 遍历下一个分支
    res = max(res, n - sum)     # 更新父图的连通块点数
    ans = min(ans, res)
    return sum
        
    
ans = N
dfs(1)  # 从1开始
print(ans)

二、847. 图中点的层次 - AcWing题库

from collections import deque
N = int(1e5 + 5)
h = [-1] * N; e = [0] * N; ne = [0] * N     # 尾节点为-1
path = [-1] * N
idx = 0

def add(a, b):
    global idx
    e[idx] = b
    ne[idx] = h[a]
    h[a] = idx
    idx += 1
    
R = lambda: map(int, input().split())
n, m = R()
for _ in range(m):
    a, b = R()
    add(a, b)

def bfs():
    q = deque([])   # 储存节点值
    q.append(1)     # 节点1
    
    path[1] = 0
    while q:
        t = q.popleft()
        i = h[t]
        while i != -1:
            # 节点存在
            val = e[i]    # 取节点值
            if path[val] == -1:
                # 未被遍历
                path[val] = path[t] + 1
                q.append(val)
            i = ne[i]
    return path[n]

print(bfs())

三、848. 有向图的拓扑序列 - AcWing题库

'''
将入度为0的点入队(入序)
最后所有点都入队了即为无环存在拓扑序
队列里面的次序即为拓扑序
'''
N = int(1e5 + 5)
h = [-1] * N; e = [0] * N; ne = [0] * N; idx = 0
d = [0] * N     # 记录入度
q = [0] * N     # 数组模拟队列

def add(a, b):
    global idx
    e[idx] = b
    ne[idx] = h[a]
    h[a] = idx
    idx += 1
    
R = lambda: map(int, input().split())
n, m = R()
for _ in range(m):
    a, b = R()
    add(a, b)
    d[b] += 1   # b入度加一
    
def topsort():
    # 返回是否含有拓扑序,有则返回拓扑序
    hh, tt = 0, -1
    # 将入度为0的点入队
    for i in range(1, n + 1):
        if d[i] == 0:
            tt += 1
            q[tt] = i 
    while hh <= tt:
        t = q[hh]
        hh += 1 
        i = h[t]
        while i != -1:
            j = e[i]
            d[j] -= 1
            if d[j] == 0:
                tt += 1 
                q[tt] = j
            i = ne[i]
    return tt == n - 1     # 是不是所有点都入队了

if topsort():
    for i in range(n):
        print(q[i], end = ' ')
else:
    print(-1)

感谢你看到这里!一起加油吧!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PMP--知识卡片--波士顿矩阵

文章目录 记忆黑话概念作用图示 记忆 一说到波士顿就联想到波士顿龙虾&#xff0c;所以波士顿矩阵跟动物有关&#xff0c;狗&#xff0c;牛。 黑话 你公司的现金牛业务&#xff0c;正在逐渐变成瘦狗&#xff0c;应尽快采取收割策略&#xff1b;问题业务的储备太少&#xff0…

AGI|Transformer自注意力机制超全扫盲攻略,建议收藏!

一、前言 2017年&#xff0c;谷歌团队推出一篇神经网络的论文&#xff0c;首次提出将“自注意力”机制引入深度学习中&#xff0c;这一机制可以根据输入数据各部分重要性的不同而分配不同的权重。当ChatGPT震惊世人时&#xff0c;Transformer也随之进入大众视野。一夜之间&…

【机器学习】连续字段的特征变换

介绍 除了离散变量的重编码外&#xff0c;有的时候我们也需要对连续变量进行转化&#xff0c;以提升模型表现或模型训练效率。在之前的内容中我们曾介绍了关于连续变量标准化和归一化的相关内容&#xff0c;对连续变量而言&#xff0c;标准化可以消除量纲影响并且加快梯度下降…

智能合约与企业数字化转型:案例分析与未来展望

随着区块链技术的快速发展&#xff0c;智能合约作为其重要应用之一&#xff0c;正逐渐成为推动企业数字化转型的关键工具。智能合约不仅可以自动执行和验证合同&#xff0c;还能够增强数据安全性、优化业务流程&#xff0c;并提升企业间的信任和透明度。本文将深入探讨智能合约…

CPU cache

参考&#xff1a;https://levelup.gitconnected.com/understanding-l1-l2-and-l3-caches-how-to-improve-cpu-performance-d9dcc3e2e1f5 2、以下部分&#xff1a;如何获取x86 CPU L1、L2和L3 cache的大小 - 知乎 (zhihu.com) CPU cache是介于CPU内核和物理内存&#xff08;动态…

ssm校园志愿服务信息系统-计算机毕业设计源码97697

摘 要 随着社会的进步和信息技术的发展&#xff0c;越来越多的学校开始重视志愿服务工作&#xff0c;通过组织各种志愿服务活动&#xff0c;让学生更好地了解社会、服务社会。然而&#xff0c;在实际操作中&#xff0c;志愿服务的组织和管理面临着诸多问题&#xff0c;如志愿者…

实战演练:Fail2Ban部署全攻略,确保您的服务器免受CVE-2024-6387侵害!

Fail2Ban是一个开源的入侵防护软件&#xff0c;它可以扫描日志文件&#xff0c;识别恶意行为&#xff08;如多次失败的登录尝试&#xff09;&#xff0c;并自动采取措施&#xff08;如更新防火墙规则&#xff09;来阻止攻击者。最近&#xff0c;CVE-2024-6387漏洞的爆出使我们更…

一分钟学习数据安全—自主管理身份SSI分布式加密密钥管理

在这篇之前&#xff0c;我们已经对SSI有了一个全局的了解。这个系列的文章可以作为一个学习笔记来参考&#xff0c;真正要实践其中的一些方案、协议&#xff0c;还需要参考专业的书籍和官方文档。作为一个SSI系列学习笔记的最后一篇&#xff0c;我们做一个简单的延伸&#xff0…

无服务器【Serverless】架构的深度剖析:组件介绍、优缺点与适用场景

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云计算的发展趋势 2、无服务器计算简介 二、无服务…

DPDK概述

文章目录 1. DPDK概述1.1 DPDK 内存管理Mbuf单帧结构:1.2 DPDK内核驱动 igb_uio驱动1.3 DPDK源码下载方式1.4 pktgen源码下载方式1.5 DPDK相关名词解释 1. DPDK概述 Intel DPDK全称Intel Data Plane Development Kit&#xff0c;是Intel提供的数据平面开发工具集&#xff0c;为…

AI语音工具——Fish Speech:使用简单,可训练专属语音模型!

今天给大家介绍一款超好用的AI语音工具——Fish Speech&#xff0c;使用简单&#xff0c;还可以训练自己的语音模型&#xff01; 工具介绍 Fish Speech是由 Fish Audio 开发的免费开源文本转语音模型。经过十五万小时的数据训练&#xff0c;Fish Speech能够熟练掌握中文、日语…

binutils ifunc 流程图

上图是x86 binutils 的流程图。 函数说明_bfd_x86_elf_link_hash_table_createInit local STT_GNU_IFUNC symbol hash.elf_x86_64_check_relocsAdd support for handling STT_GNU_IFUNC symbols_bfd_elf_x86_get_local_sym_hashFind and/or create a hash entry for local sym…

SSL/CA 证书及其相关证书文件解析

在当今数字化的时代&#xff0c;网络安全变得至关重要。SSL&#xff08;Secure Socket Layer&#xff09;证书和CA&#xff08;Certificate Authority&#xff09;证书作为保护网络通信安全的重要工具&#xff0c;发挥着关键作用。 一、SSL证书 SSL证书是数字证书的一种&…

前端八股文 说一下盒模型

网页中任何一个元素都可以视为一个盒子&#xff0c;由里到外&#xff0c;盒模型包括外边界&#xff08;margin&#xff09;、边框&#xff08;border&#xff09;、内边界&#xff08;padding&#xff09;和内容&#xff08;content&#xff09;。 盒模型基本分为3种&#xff1…

【遥感语义分割】UNetFormer

原文&#xff1a;UNetFormer: An UNet-like Transformer for Efficient Semantic Segmentation of Remotely Sensed Urban Scene Imagery Libo Wang1, 2, Rui Li1, Ce Zhang3, 4, Shenghui Fang1*, Chenxi Duan5, Xiaoliang Meng1, 2 and Peter M. Atkinson3, 6, 7 1) 中国…

【机器学习】分类算法-KNN算法实践

一、前言 前面的一篇文章介绍了KNN算法的基本思想&#xff0c;接下来我们就根据B站UP主【abilityjh】老师的节奏&#xff0c;做一个关于KNN算法运用于“约会网站配对”的算法实现。当然&#xff0c;这个实践的代码是一样的&#xff0c;但是理解的话&#xff0c;我是用自己的话来…

考到PMP证书后 如何获得PDU?

目前仅续证一次&#xff0c;也是在威班PMP考试后免费积攒的。其实获取PMP的渠道很多&#xff0c;网上也有很多售卖的&#xff0c;积攒起来也挺容易&#xff0c;不过在续证的时候千万不要找不明渠道来源的人去搞&#xff0c;不靠谱。续证期有三年的&#xff0c;三年时间积攒60PD…

第十二章 执行引擎

一、执行引擎概述 概述 执行引擎是 Java 虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念&#xff0c;这两种机器都有代码执行能力&#xff0c;其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的&#xff0c;而虚拟机的执行引…

简单的git pull fail Can‘t update has no tracked branch解决记录

简单的git pull fail Can‘t update has no tracked branch解决记录 1. 问题描述 上午同事使用idea拉取代码的时候&#xff0c;发现拉取不了&#xff0c;提示用户权限问题&#xff0c;之后修改了git用户信息&#xff0c;发现还是拉取不了分支代码&#xff0c;然后删除了git r…

docker介绍与详细安装

1 docker 介绍 1.1 虚拟化 在计算机中&#xff0c;虚拟化&#xff08;英语&#xff1a;Virtualization&#xff09;是一种资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打破实…