消息的传递

article/2025/7/6 6:13:42

我们的郭嘉大大在曹操这过得逍遥自在,但是有一天曹操给了他一个任务,在建邺城内有 N 个袁绍的奸细,将他们从 1 到 N 进行编号,同时他们之间存在一种传递关系,即若C{i,j}=1,则奸细 i 能将消息直接传递给奸细 j。

现在曹操要发布一个假消息,需要传达给所有奸细,而我们的郭嘉大大则需要传递给尽量少的奸细使所有的奸细都知道这一个消息,问我们至少要传给几个奸细?


我觉得自己写这道题莫名的心态爆炸,第一眼是个并查集,后来发现并不能保证互相传达,因为是有向图

然后想到了Tarjan强联通分量,然后就是一通瞎写

但是我忽略了一个问题,那就是不一定要每个点都要互相到达

例如下图:

我们可以告诉标红的点,然后所有人就都知道了

所以经过思索,我们可以吧刚才的两个思路结合在一起,也就是先用Tarjan缩点,然后再判断是是否连通

不会缩点的点这里:https://www.cnblogs.com/WWHHTT/p/9825766.html

下面给出代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
inline int min(int a,int b){return a<b?a:b;}
inline int max(int a,int b){return a>b?a:b;}
inline int rd(){int x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';return x*f;
}
inline void write(int x){if(x<0) putchar('-'),x=-x;if(x>9) write(x/10);putchar(x%10+'0');return ;
}
int n,m;
int head1[1000006],nxt1[2000006],to1[2000006];
int total1=0;
void add1(int x,int y){total1++;to1[total1]=y;nxt1[total1]=head1[x];head1[x]=total1;return ;
}
int dfn[100006],low[100006];
int color[100006];
int tot=0;
int color_cnt=0;
int book[100006];
int sta[100006];
int size=0;
void Tarjan(int x,int fa){//TarjanÄ£°å low[x]=dfn[x]=++tot;sta[++size]=x;book[x]=1;for(int e=head1[x];e;e=nxt1[e]){if(!dfn[to1[e]]){Tarjan(to1[e],x);low[x]=min(low[x],low[to1[e]]);}else if(book[to1[e]]) low[x]=min(low[x],dfn[to1[e]]);}if(dfn[x]==low[x]){color[x]=++color_cnt;book[x]=0;while(sta[size]!=x){color[sta[size]]=color_cnt;book[sta[size]]=0;size--;}size--;}return ;
}
int head2[1000006],nxt2[2000006],to2[2000006];
int total2=0;
void add2(int x,int y){total2++;to2[total2]=y;nxt2[total2]=head2[x];head2[x]=total2;return ;
}
int du[1000006];
void change(){for(int i=1;i<=n;i++){for(int e=head1[i];e;e=nxt1[e]){if(color[i]!=color[to1[e]]){add2(color[i],color[to1[e]]);du[color[to1[e]]]++;}}}return ;
}
int main(){n=rd();for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){int x=rd();if(x) add1(i,j);}for(int i=1;i<=n;i++) if(!dfn[i]) Tarjan(i,0);change();int ans=0;for(int i=1;i<=color_cnt;i++) if(!du[i]) ans++;write(ans);return 0;
}

 

转载于:https://www.cnblogs.com/WWHHTT/p/9851883.html


http://chatgpt.dhexx.cn/article/QsP4BVDT.shtml

相关文章

简单知识——跨页面信息传递

背景 一个简单的数据查询功能&#xff0c;列表页面有“查看详情”按钮&#xff0c;跳转详情页面时列表的一条记录信息需要传递到详情页面&#xff1b;而详情页面有“返回”按钮&#xff0c;返回的同时也需要将原列表的查询条件回显。 跳转方式直接是 window.location.href&am…

信息传递的多样化的挑战

信息传递的障碍&#xff0c;是造成竞争被动的重要原因。因此&#xff0c;要使有用的信息得以正确传递&#xff0c;必须克服这种传递障碍。 方法之一是减少组织机构层次和信息传递的环节&#xff0c;尽量做到信息的直接贯通。 方法之二是采取双向传递方式。传统的传递往往是高一…

java实现信息传递

在过去&#xff0c;我们无数次实现了代码的本机运行&#xff0c;一行行的代码在我们的屏幕上飞舞&#xff0c;最终形成种种不同的结果&#xff0c;但是&#xff0c;这些都止于自己的计算机上&#xff0c;在这个万物互联的世界里&#xff0c;通信&#xff0c;是不可缺少的一环&a…

【PyG入门学习】三:信息传递机制

1.理论基础 将普通的卷积过程推广到非规则数据领域一般是通过邻域聚合或者信息传递机制。 x i ( k − 1 ) ∈ R F x^{(k-1)}_i∈R^F xi(k−1)​∈RF表示在第k-1层节点i的节点特征&#xff0c; e j , i ∈ R D e_{j,i}∈R^D ej,i​∈RD表示从节点j到节点i的边的特征&#xff08…

[易飞]录入信息传递设置信息

通常我们在查询相关单据单身中会有附带上一个单别的关联单据&#xff0c;比如采购发票单身有进货单单别、单号。系统默认做了超连接。 可有些时候我想查看这个品号信息的参数呢&#xff1f;是否可以自定义呢&#xff1f; 今天是礼拜一&#xff0c;打开某聊天群&#xff1a;就显…

100种思维模型之信息传递思维模型-028

人与人之间存有 认知偏差和理解偏差 &#xff0c;信息在传递过程中会 衰减、失真以及再加工 &#xff01; 信息传递思维模型 &#xff0c;一个有助于 提高信息传递质量 的思维模型。下面从三个方面进行介绍&#xff0c; 何谓信息传递思维模型、信息传递思模型生活中的运…

沟通管理--关于信息的有效传递和维护

沟通管理作为项目管理核心知识领域之一&#xff0c;在项目管理和团队协作中的作用毋庸置疑。沟通管理涉及的范围很广&#xff0c;本文从沟通的重要性和模型出发&#xff0c;主要从信息传递和信息维护这两个方面对沟通管理进行阐述。 一. 关于沟通 下面这张图描绘了西方文化中…

HC官方资料介绍

中国区市场招商联系方式&#xff1a;13867974424

HC-SR04驱动记录

文章目录 1、工作原理2、读取数据方式3、驱动记录 1、工作原理 常用的HC-SR04模块如下所示&#xff1a; 引脚说明&#xff1a; 引脚说明VCC电源&#xff0c;常用5vTrig控制端Echo接收端GND地 使用说明&#xff1a; 控制端发送一个10us的高电平脉冲&#xff0c;之后再接收口…

【STM32篇】驱动HC_SR04超声波测距模块

CH_SR04 一、简介 1.产品特点 HC_SR04超声波测距模块可提供2cm-400cm的非接触式测距感测功能&#xff0c;测距精度高达3mm&#xff1b;模块包括超声波发射器&#xff0c;接收器与控制电路。 基本工作原理&#xff1a; &#xff08;1&#xff09;采用IO口TRIG触发测距&#xff0…

HC-05蓝牙模块配置

目录 1、连接蓝牙模块a.蓝牙模块通过USB转TTL连接电脑b.打开串口助手&#xff0c;波特率设置为38400c.检验是否连接成功 2、配置波特率3、修改密码4、设置主从模式5、设置蓝牙连接模式6、查询自身地址7、添加配对蓝牙地址8、测试 1、连接蓝牙模块 a.蓝牙模块通过USB转TTL连接电…

HC-06蓝牙模块使用方法

接线方式&#xff1a; 配套资料&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1_8-d1LoHuhpIBC9Ygu4aJQ 参考&#xff1a; (1272条消息) HC-05/06蓝牙模块的原理及使用方法_hc-05蓝牙模块原理图_小小少年123的博客-CSDN博客 注意&#xff1a;蓝牙灯闪烁分析 如果…

初次使用HC-08蓝牙模块01

基础连接 1.接线 2.测试&#xff0c;手机APP和测试架&#xff0c;成功互发AT指令即成功 3.完整教学 测试结果 起初手机APP搜索不到蓝牙&#xff0c;以测试架为主&#xff0c;另一个为从&#xff0c;从上面的蓝灯不亮&#xff0c; 后面重新恢复出厂设置&#xff08;在串口…

HC-05的基本使用(STM32)

目录 一、HC-05 1、HC-05简介 2、接线方式 二、AT指令 1.基本指令 2、基本的使用 3、手机连接HC-05 三、CubuMX配置&#xff08;基于stm32f407zgt6&#xff09; 总结 一、HC-05 1、HC-05简介 HC-05 蓝牙串口通信模块&#xff0c;是基于 Bluetooth Specification V2.0 带 EDR 蓝…

智慧小区 HC 系统安装配置简单流程(V2022-09-28)

首先感谢官方 HC 开发&#xff08;一纸荒年&#xff09;的指导 ------------- 我的系统为&#xff1a; conetos 8.2(官方建议 7.6 版本较稳定) 登陆空间系统打开 SSH 终端# 第一步骤 1&#xff1a;先安装梓豪平台 1.1:梓豪平台安装是非常简单的&#xff0c;我们可以通过以…

Media Player Classic - HC 源代码分析 1:整体结构

Media Player Classic - HC 源代码分析系列文章列表&#xff1a; Media Player Classic - HC 源代码分析 1&#xff1a;整体结构 Media Player Classic - HC 源代码分析 2&#xff1a;核心类 &#xff08;CMainFrame&#xff09;&#xff08;1&#xff09; Media Player Cla…

HC-08蓝牙模块与电脑进行蓝牙远程通信! 支持HC-02、HC-08、HC-42蓝牙

因项目接触HC-08蓝牙模块&#xff0c;一直想电脑与STM32上接的HC-08蓝牙模块进行远程通信&#xff01;在网上未能找到解决办法&#xff0c;此方式为广州汇承公司提供&#xff08;蓝牙生产厂家&#xff09;&#xff0c;亲测有效&#xff01; 一、适用型号及PC条件&#xff1a; 1…

蓝牙模块(HC-05/HC-06)详解

这里写目录标题 0. 蓝牙概述蓝牙技术的特点 1. 常见的蓝牙模块2. HC-05/HC-062.1 概念2.2 区别 3. STM32使用HC-05通信3.1 方法3.2 示例代码 0. 蓝牙概述 蓝牙&#xff08;Bluetooth&#xff09;是一种用于无线通信的技术标准&#xff0c;允许设备在短距离内进行数据交换和通信…

经验分享帖 汇承HC-12无线模块的简单使用说明

** 汇承HC-12无线模块的简单使用说明 ** 无意间在网上看到HC-12的功能介绍,最吸引我的是他的通信距离。于是我从网上买了两个&#xff0c;想着替代两个蓝牙&#xff0c;实现远距离通信控制。 这两张图是我手上的HC-12无线模块&#xff0c;其他引脚我就不多说了&#xff0c;与…

HC-05主从模式蓝牙配对说明v1.0

HC-05主从模式蓝牙配对说明 在参加电赛或者做毕业设计的时候&#xff0c;可能需要进行无线通信传输数据。 无线通信的方案有NRF24L01的射频传输。 有esp8266的wifi。 使用HC-05蓝牙的方式进行无线透传使用简单&#xff0c;延时较低&#xff0c;用于调试场景非常方便&#xff0c…