网络稳定性(蓝桥省赛)

news2024/9/26 3:29:02

0网络稳定性 - 蓝桥云课 (lanqiao.cn)

知识点:克鲁斯卡尔生成树,lca,倍增

最小生成树的模板:最小生成树【模板】-CSDN博客

题解代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+100;
const int inf=0x7fffffff;
int n,m,q;
struct point{
    int beg,end,dis;
};
point ed[N];
typedef pair<int,int> pii;
vector<pii>g[N];
bool vis[N];
int f[N];
int cost[N][20],dep[N],fa[N][20];
int find(int x)
{
    if(f[x]==x)
        return x;
    else
        return f[x]=find(f[x]);
}
void Union(int a,int b)
{
    a=find(a);
    b=find(b);
    if(a!=b)
        f[a]=b;
}
void krus()
{
    sort(ed,ed+m,[&](point a,point b){ return a.dis>b.dis; });   for(int i=0;i<m;i++)
    {
        if(find(ed[i].beg)!=find(ed[i].end))
        {
            Union(ed[i].beg,ed[i].end);
            g[ed[i].beg].push_back((pii){ed[i].end,ed[i].dis});
            g[ed[i].end].push_back((pii){ed[i].beg,ed[i].dis});
        }
    }
}

void dfs(int u,int fat)
{
    vis[u]=true;
    dep[u]=dep[fat]+1;//记录点的深度
    fa[u][0]=fat;//u点向上跳0^2次
    for(int i=1;i<=19;i++)
    {
        if(fa[u][i-1]>0)//递推点的所有能跳到的祖先节点
        {
            fa[u][i]=fa[fa[u][i-1]][i-1];
            cost[u][i]=min(cost[u][i-1],cost[fa[u][i-1]][i-1]);//存路径中的两相邻点间的路稳定性低那条路的值
        }
    }
    for(auto i:g[u])
    {
        if(i.first!=fat)
        {
            cost[i.first][0]=i.second;//到父节点的网络稳定性的值
            dfs(i.first,u);
        }
    }   
}
int lca(int u,int v)
{
    int res=inf;
    if(dep[u]<dep[v])//从u点找
        swap(u,v);
    int dx=dep[u]-dep[v];
    for(int i=0;dx>0;i++,dx=dx/2)//dx>>=1,让u,v到达树同一层
    {
        if(dx&1)
        {
            res=min(res,cost[u][i]);//保存路径中的两相邻节点间的路稳定性最低的那条路的值
            u=fa[u][i];
        }    
    }
    if(u==v)//特判,v点为u的祖先节点
        return res;
    for(int i=19;i>=0;i--)//让u,v点跳到公共祖先的儿子节点
    {
        if(fa[u][i]!=fa[v][i])
        {
            res=min(res,min(cost[u][i],cost[v][i]));//还是保存路径中的两相邻的点的网络稳定性低的那条路的值
            u=fa[u][i],v=fa[v][i];
        }
    }
    res=min(res,min(cost[u][0],cost[v][0]));//找到公共祖先后的:答案就是 u->公共祖先->v 的路径中每相邻两点的路的网络稳定性的最小值
    return res;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);cout.tie(nullptr);
    cin>>n>>m>>q;
    for(int i=1;i<=n;i++)//初始化并查集
        f[i]=i;
    for(int i=0;i<m;i++)
    {
        cin>>ed[i].beg>>ed[i].end>>ed[i].dis;
    }
    krus();//生成最大树,因为找稳定性高的总路径
    for(int i=1;i<=n;i++)
    {
        if(!vis[i])//每个点以根节点遍历图,图可能不联通
            dfs(i,0);
    }
    while(q--)
    {
        int x,y;
        cin>>x>>y;
        if(find(x)==find(y))//查找两点是否可以到达
            cout<<lca(x,y)<<endl;
        else
            cout<<-1<<endl;
    }
    return 0;
}

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

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

相关文章

智慧光伏:企业无纸化办公

随着科技的快速发展&#xff0c;光伏技术不仅成为推动绿色能源革命的重要力量&#xff0c;更在企业办公环境中扮演起引领无纸化办公的重要角色。智慧光伏不仅为企业提供了清洁、可持续的能源&#xff0c;更通过智能化的管理方式&#xff0c;推动企业向无纸化办公转型&#xff0…

CBO VS ABO,哪种策略才更能优化FB广告?

海外创业时&#xff0c;FB广告无疑是吸引目标受众、推动业务增长的重要渠道之一&#xff01;然而令大家头疼的却是在CBO与ABO的选择上&#xff0c;今天就带大家一起解读这两种常见的广告策略。了解两者之间的区别、优缺点及适用场景。 CBO 和 ABO 分别是什么&#xff1f; CBO&a…

网络面试——浏览器输入url到显示主页的过程

浏览器输入URL到显示主页的过程通常可以分为以下步骤&#xff1a; 1. **URL解析**&#xff1a; - 当用户在浏览器的地址栏中输入URL时&#xff0c;浏览器会首先对该URL进行解析。 - 解析URL包括识别协议&#xff08;例如HTTP、HTTPS&#xff09;、主机名&#xff08;例如…

Redis项目实战

本文用用代码演示Redis实现分布式缓存、分布式锁、接口幂等性、接口防刷的功能。 课程地址&#xff1a;Redis实战系列-课程大纲_哔哩哔哩_bilibili 目录 一. 新建springBoot项目整合Redis 二. Redis实现分布式缓存 2.1 原理及好处 2.2 数据准备 2.3 Redis实现分布式缓存…

9.HelloWorld案例常见问题

文章目录 一、BUG二、BUG的解决三、HelloWorld常见问题 一、BUG BUG&#xff08;小甲虫&#xff09;。计算机刚开始出现的时候&#xff0c;因为体积比较大&#xff0c;一些小虫子很容易转进去。有一天有一只蟑螂钻到了计算机当中&#xff0c;从而导致计算机不能正常运行&#…

揭秘!抖音严打AI网红骗局,维护虚拟世界秩序!

近年来&#xff0c;AI网红在社交媒体平台上的兴起引发了不少争议。为了规范虚拟人物的内容创作&#xff0c;抖音平台决定对AI网红乱象进行严厉打击&#xff0c;并推出了一系列措施。 AI-321 | 专注于AI工具分享的网站 AI工具集 | 人工智能工具箱 | 全球顶尖AI工具软件推荐与分…

Java的字符串的基础知识(必看)

目录 Java的字符串的基础知识(必看) String API的使用 String概述 创建String对象的两种方式 号比的是什么? 难点 经典String案例 易错点 StringBuilder 疑难点: StringJoiner 字符串相关类的底层原理 中文的存储原理 String的常见的构造方法 Java的字符串的基础…

Avue-crud表格操作栏不显示修改、删除按钮

2024-03-28 奇了怪了&#xff0c;CSDN自动把我之前的文章设置为VIP了&#xff0c;怪不得有时候搜东西看着看着要收费&#xff0c;现在找东西都不好找&#xff0c;我已经反馈不同意了&#xff0c;看看能不能给我取消吧 今天用Avue的时候发现操作栏的按钮没了&#xff0c;按照文…

网络专有名词

网络专有名词 一、子网掩码 IP地址是以网络号和主机号来标示网络上的主机的&#xff0c;我们把网络号相同的主机称之为本地网络&#xff0c;网络号不相同的主机称之为远程网络主机&#xff0c;本地网络中的主机可以直接相互通信&#xff1b;远程网络中的主机要相互通信必须通过…

从零开始学起!全方位解析App压力测试的关键要点!

简介 Monkey 是 Google 提供的一个用于稳定性与压力测试的命令行工具 可以运行在模拟器或者实际设备中 它向系统发送伪随机的用户事件对软件进行稳定性与压力测试 为什么要用 Monkey Monkey 就是像猴子一样上蹿下跳地乱点 为了测试软件的稳定性&#xff0c;健壮性 随机点…

如何使用群晖WebDAV实现固定公网地址同步Zotero文献管理器

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件&#xff0c;能轻易的部署微服务。它支持多种后端 (D…

Automatic Prompt Engineering

让大模型自己生成prompt&#xff0c;生成提示&#xff08;prompt&#xff09;存在两种不同的操作方式。第一种方式是在文本空间中进行&#xff0c;这种提示以离散的文本形式存在。第二种方式是将提示抽象成一个向量&#xff0c;在特征空间中进行操作&#xff0c;这种提示是抽象…

android安卓看点新闻课设

一、系统需求分析 1.1 引言 1.1.1 开发目的 看点新闻App的开发是为了实时查看最新消息以了解社会动态&#xff0c;增长知识&#xff0c;增广见闻&#xff0c;顺便娱乐一下内心世界来放松自己。 1.1.2 开发背景 随着新媒体的崛起&#xff0c;纸媒遭受到重大打击&#xff0c…

vscode安装vue3+elment-plus

1.用vscode打开打算创建项目的目录 2.命令行中运行以下命令 npm create vuelatest3.设置好项目名称 4.执行以下命令 cd <your-project-name>5.执行以下命令 cnpm install6.执行以下命令安装elment-plus cnpm install element-plus --save7.执行以下命令 npm run dev…

Vuepress 2从0-1保姆级进阶教程——美化与模板

Vuepress 2 专栏目录 1. 入门阶段 Vuepress 2从0-1保姆级入门教程——环境配置篇Vuepress 2从0-1保姆级入门教程——安装流程篇Vuepress 2从0-1保姆级入门教程——文档配置篇Vuepress 2从0-1保姆级入门教程——范例与部署 2.进阶阶段 Vuepress 2从0-1保姆级进阶教程——全文搜索…

使用unplugin-auto-import页面不引入api飘红

解决方案&#xff1a;. tsconfig.json文件夹加上 {"compilerOptions": {"target": "ES2020","useDefineForClassFields": true,"module": "ESNext","lib": ["ES2020", "DOM", &q…

Python程序设计 循环结构(二)

1.斐波那契数列 编写一个能计算斐波那契数列中第x个数的小程序。斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列、 因数学家莱昂纳多斐波那契&#xff08;Leonardoda Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为…

分类任务中的评估指标:Accuracy、Precision、Recall、F1

概念理解 T P TP TP、 T N TN TN、 F P FP FP、 F N FN FN精度/正确率&#xff08; A c c u r a c y Accuracy Accuracy&#xff09; 二分类查准率 P r e c i s i o n Precision Precision&#xff0c;查全率 R e c a l l Recall Recall 和 F 1 − s c o r e F1-score F1−s…

Collection与数据结构 数据结构预备知识(一) :集合框架与时间空间复杂度

1.集合框架 1.1 什么是集合框架 Java集合框架,又被称为容器,是定义在java.util包下的一组接口和接口实现的一些类.其主要的表现就是把一些数据放入这些容器中,对数据进行便捷的存储,检索,管理.集合框架底层实现原理其实就是各种数据结构的实现方法,所以在以后的学习中,我们会…

2024年2月吸尘器行业线上电商(京东天猫淘宝)综合排行榜

鲸参谋监测的线上电商平台&#xff08;淘宝天猫京东&#xff09;2月吸尘器行业销售数据公开。 根据鲸参谋电商数据平台显示&#xff0c;吸尘器行业2月销量累计约53万件&#xff0c;环比上个月下滑29%&#xff0c;同比去年下滑19%&#xff1b;销售额累计约4亿&#xff0c;环比上…