间谍网络--tarjan 解题报告

tarjan题目(3)间谍网络 【题目描述】: 由于外国间谍的大量渗入,国家安全正处于高度的危机之中。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。   我们的反间谍 阅读详情

一道比较裸的tarjan题,但由于第一次写,还是wa了几次

可以先dfs一遍,如果是NO就直接遍历找出最小的点,return 0;
否则就tarjan一边并把一个SCC里cost最小的值min找到,SCC_cost[SCC_sum]=min,并缩点,最后找入度为零的点计算cost的和,输出即可。

代码如下

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int N=3005,M=10005;
bool ss[N][N],pd[N],instack[N],vis[N];
int DFN[N],low[N],head[N],cost[N],SCC_num[N],SCC_cost[N],stack[N],edge_from[M],edge_to[M],rudu[N];
int num,SCC_sum,indexxx,top,n,n1,n2;
struct Edge 
{
    int next,to;
}s[M];
void add(int from,int to)
{
    s[++num].next=head[from];
    s[num].to=to;
    head[from]=num;
    return ;
}
void read(int &x)
{
    x=0;char c=getchar();while(c<48||c>57) c=getchar();while(c>=48&&c<=57) x=x*10+c-48,c=getchar();
    return ;
}
void dfs(int u)
{
    pd[u]=1;
    for(int i=head[u];i;i=s[i].next)
    if(!pd[s[i].to]) dfs(s[i].to);
    return ;
}
void tarjan(int u)
{

    instack[u]=vis[u]=1;
    low[u]=DFN[u]=++indexxx;
    stack[++top]=u;
    for(int i=head[u];i;i=s[i].next)
    {
        int v=s[i].to;
        if(!DFN[v])
        {
            tarjan(v);
            low[u]=min(low[u],low[v]);
        }
        else if(instack[v])low[u]=min(low[u],DFN[v]);
    }
    if(low[u]==DFN[u])
    {
        SCC_sum++;
        int v=0;
        while(v!=u)
            v=stack[top--],instack[v]=0,SCC_num[v]=SCC_sum,SCC_cost[SCC_sum]=min(SCC_cost[SCC_sum],cost[v]);
    }
    return ;
}
int main()
{
    memset(cost,127/3,sizeof(cost));
    memset(SCC_cost,127/3,sizeof(SCC_cost));
    int i,a,b;
    read(n),read(n1);
    for(i=1;i<=n1;i++)
    {
        read(a),read(b);
        cost[a]=b;
    }
    read(n2);
    for(i=1;i<=n2;i++)
    {
        read(a);read(b);
        edge_from[i]=a,edge_to[i]=b;
        add(a,b);
    }
    for(i=1;i<=n;i++)
    {
        if(!pd[i]&&cost[i]!=707406378)
        dfs(i);
    }
    for(i=1;i<=n;i++)
    {
        if(!pd[i]) 
        {
        printf("NO\n%d\n",i);
        return 0;
        }
    }
    memset(pd,0,sizeof(pd));
    for(i=1;i<=n;i++)
    if(!DFN[i])
    tarjan(i),top=0;
    memset(s,0,sizeof(s));
    memset(rudu,0,sizeof(rudu));
    num=0;
    for(i=1;i<=n2;i++)
    {
        if(SCC_num[edge_from[i]]!=SCC_num[edge_to[i]])
        rudu[SCC_num[edge_to[i]]]++;
    }
    int sum=0;
    for(i=1;i<=SCC_sum;i++)
        if(!rudu[i]) sum+=SCC_cost[i];
    printf("YES\n%d\n",sum);
    return 0;
}
C++——NOIP模拟题——间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度危机之中。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍接受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。 我们的反间谍机关提供 阅读详情

相关推荐

一文讲透什么是ADC/DAC中的DDC、DUC、采样率以及数据率等概念

摘要:ADC/DAC中的采样率与数据率概念不同,采样率是转换器的时钟速率,而数据率是数字输出的实际速率。抽取通过滤波降低数据速率,提升信噪比但牺牲带宽;内插则通过插零和滤波提高采样率,将镜像信号移远但增加延迟和功耗。JESD204B标准的高速转换器需平衡通道数与串行速率,内插/抽取技术是关键。文章还解析了DDC、DUC的应用及优缺点,为高速数据转换设计提供参考。(150字)

weixin_49761275的博客 4264

洛谷 P1262 间谍网络 题解

题目: 由于外国间谍的大量渗入,国家安全正处于高度危机之中。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍接受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。 我们的反间谍机关提供了一份资料,包括所有已知的受贿的间谍,以及他们愿意收受的具体数额。同时我们还知道哪些间谍手中具体掌握了哪些间谍的资料。假

pei_fenga的博客 701

GX WORKS2通过交换机连接PLC的方法

三菱PLC连接方法的分享

weixin_64927621的博客 3618

洛谷1262间谍网络(tarjan缩点)

tarjan缩点思想:http://m.blog.youkuaiyun.com/blog/qq574857122/16361033 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中

kaqiur 1065

SAP S4业务伙伴(BP)实战指南:从角色分配到数据同步的完整流程

本文详细解析了SAP S4业务伙伴(BP)功能,从基础概念到实战操作,涵盖角色分配、数据同步及常见问题排查。通过BP机制,企业可高效管理客户、供应商等多重身份,实现数据共享和动态切换,显著提升主数据管理效率。特别适合SAP实施顾问和ERP管理员参考。

y2z3a4b5c的博客 868

Ubuntu双系统引导修复实战:boot-repair工具详解

本文详细介绍了使用boot-repair工具修复Ubuntu双系统引导丢失问题的实战方法。当GRUB引导菜单因安装新系统或更新而损坏时,通过制作Ubuntu启动盘进入Live环境,安装并运行boot-repair,可一键完成系统修复引导,自动化执行GRUB重装与配置,解决无法进入Windows或Ubuntu的常见故障。

weixin_29224589的博客 356

JZOJ-senior-3910. 【NOIP2014模拟11.1A组】Idiot 的间谍网络

3910. 【NOIP2014模拟11.1A组】Idiot 的间谍网络 (Standard IO)Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Description作为一名高级特工,Idiot 苦心经营多年,终于在敌国建立起一张共有n 名特工的庞大间谍网络。 当然,出于保密性的要求,间谍网络中的每名特工最多只会有

HuangXinyue1017的博客 481

自动驾驶仿真:python和carsim联合仿真案例

carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和carsim联合仿真的方法,虽然carsim官方有个Steer_Control.py相关的案例,但是感觉比较冗余,这里抽出重点部分和大家交流探讨下。提示:以下是本篇文章正文内容,下面案例可供参考1、这里关于solvers的细节其实都没说,因为里面确实也没什么内容好讲的,本质就是调用carsim.dll,如果你需要更多的函数解析其实可以看vs_api.h,路径在,具体内容如下图所示。

zataji的博客 9060

间谍网络

间谍网络(net.cpp) Tips:适合初学者。 题目不再赘述。 Advantages:关于有间谍无法被控制的情况做了优化,降低了此种情况下时间复杂度。 #include<bits/stdc++.h> using namespace std; const int N=1e4+1; int first[N],next[N],to[N],id[N],dfn[N],sta[N],low[N...

Darley_LL的博客 464

焊缝缺陷智能检测:基于 YOLO 的工业质检系统实战

从焊缝缺陷数据集的构建到模型训练,从桌面检测界面到缺陷统计输出,本文覆盖了一套工业焊缝质检系统的完整路线。这个场景的核心难点在数据层面——气孔和裂纹这类小目标的标注质量直接决定了模型的最终表现。建议先在开源数据集上跑通全链路,确认 mAP 达到可接受的水平后,再通过补充特定类型的小目标数据和提升输入分辨率来做精度优化。工业场景中,漏检一个气孔的成本和误报一个假阳性的成本不一样——根据对两类成本的承受力,调整置信度阈值来找到业务上的最佳平衡点。

m0_71589036的博客 201

大数据利器Hadoop:从基础到实战,一篇文章掌握大数据处理精髓!

在当今大数据时代,数据量的爆炸式增长对企业和技术提出了前所未有的挑战。如何高效地存储、处理和分析这些庞大的数据集,成为了亟待解决的问题。Hadoop作为一种分布式计算框架,应运而生,为大数据处理提供了有效的解决方案。Hadoop是一个由Apache软件基金会维护的开源项目,它基于Google的分布式文件系统(Google File System,GFS)和MapReduce计算模型设计。Hadoop的主要目标是处理大规模数据集,它可以在普通硬件集群上运行,从而降低了大数据处理的成本。

邓邓子的博客 8276

P1262 间谍网络

题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中。如果 A 间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B。有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。 我们的反间谍机关提供了一份资料,包括所有已知的受贿的间谍,以及他们愿意收受的具体数额。同时我们还知道哪些间谍手中具体掌握了哪

weixin_51008985的博客 271

【系统分析师】2025年下半年真题:案例分析-答案及详解(回忆版)

Redis相比Memcached在电商高并发场景下具有显著优势:支持持久化(RDB/AOF)、丰富数据结构(如有序集合实现排行榜)、原生支持集群和哨兵模式(高可用性)。布隆过滤器通过位数组和哈希函数预先存储所有合法订单ID,当查询请求到达时快速拦截无效ID(如伪造ID),避免其穿透缓存直接冲击数据库,从而预防缓存击穿问题。

数据知道的博客 5982

1517:间谍网络 - tarjan割点

1517:间谍网络 时间限制: 1000 ms 内存限制: 562144 KB 提交数: 76 通过数: 33 【题目描述】 由于外国间谍的大量渗入,国家安全正处于高度危机之中。如果 A间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B。有些间谍接受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们...

m0_37579232的博客 617

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

间谍网络题解

题目要求判断能否通过收买间谍控制整个间谍网络,并计算最小成本。算法思路是使用Tarjan算法找出强连通分量,每个分量以最低成本购买。然后检查所有间谍是否被访问过,若未访问则输出NO及最小编号;否则统计入度为0的分量成本总和输出YES及总成本。 摘要:本题考察间谍网络的强连通分量分析,通过Tarjan算法确定必须收买的间谍组,计算控制整个网络的最小成本或识别不可控间谍。关键在于分量成本优化和连通性验证。

bz_2023f33的博客 662

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

tyvj 1153 间谍网络 tarjan有向图强连通

P1153 - 间谍网络 FromForeverBellNormal (OI)总时限:13s 内存限制:128MB 代码长度限制:64KB 描述 Description 由于外国间谍的大量渗入,国家安全正处于高度危机之中。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍接受贿赂,只要给他们一定数量的美...

alex151194310的博客 138

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【codevs4093】EZ的间谍网络 tarjan

题目描述 Description由于外国间谍的大量渗入,学校安全正处于高度的危机之中。YJY决定挺身而作出反抗。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间

DQS的树洞 913

洛谷 P1262 间谍网络 tarjan缩点

题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。 我们的反间谍机关提供了一份...

qq_44343213的博客 189

【luogu1262】 间谍网络[tarjan 缩点]

P1262 间谍网络 emmmmm依旧水题 先tarjan缩点 缩点时记录当前强连通分量里面的最小值 然后再看dfn 若为0即被访问过则不能控制 可以的话就挨个加上该值 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 const int N=8000+5,M=...

weixin_30348519的博客 127

tyvj 1153间谍网络 tarjan+缩点

 FromForeverBell☆间谍网络        描述 Description    由于外国间谍的大量渗入,国家安全正处于高度危机之中。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍接受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。 <br />我们的反间谍机关提供了一份资料,包括所有已知

kongming_acm的专栏 1370

间谍网络(Tarjan缩点)

由于外国间谍的大量渗入,国家安全正处于高度危机之中。如果 A间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B。有些间谍接受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。我们的反间谍机关提...

189

【tarjan】P1262 间谍网络

对能被收买的间谍进行tarjan tarjan后求入度为0的新点,答案为这些新点中最小的点权之和 如果跑完tarjan后,还有人没被走过,那就意味着无法全部收买,输出NO #include<bits/stdc++.h> using namespace std; const int maxn=3005; const int inf=0x3f3f3f3f; const int maxm=8005; int n,p,m; int money[maxn],ans,head[maxn],dfn[m

andyc_03的博客 282

洛谷 P1262 间谍网络 Tarjan缩点例题+模板 Java实现

题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中。如果 A 间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B。有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。 我们的反间谍机关提供了一份资料,包括所有已知的受贿的间谍,以及他们愿意收受的具体数额。同时我们还知道哪些间谍手中..

m0_52238102的博客 490

信息学奥赛一本通 1517:间谍网络 | 洛谷 P1262 间谍网络

现在存在一些初始被标记的顶点(初始被收买的间谍),问能否完成标记所有顶点。如果可以完成,输出收买间谍的最小花费。以下描述中,“某强连通分量”也指该强连通分量在缩点后形成的顶点。如果间谍A被控制,且A可以揭发B,那么间谍B也会被控制。在图论模型中就是如果标记了顶点A,且A到B有弧,那么标记顶点B。一个强连通分量中的只要有一个顶点被标记,那么整个强连通分量中的顶点都会被标记,缩点后表示该强连通分量的顶点也会被标记。每个间谍是一个顶点,如果间谍A可以揭发间谍B,那么从顶点A到顶点B有一条有向边,构成一个有向图。

君义NOIP的博客 814

(Tarjan)洛谷P1262间谍网络

洛谷P1262间谍网络 思路: 我们可以发现,不能被控制的间谍是不能被收买且不能被出卖。如果能够直接或者间接控制间谍的话,那么要么是收买入度为0的间谍,要么是几个间谍形成一个环,收买其中的最小值。 那么我们就通过可以被收买的间谍进行缩点,不断缩小给的钱的值。然后再看看有没有点没有被遍历到的点,如果有,就是有间谍不能被控制。否则,我们就将入读为0的点加起来。 注意缩点的时候,将所有的点缩成一个点,类似于并查集一样。在下面遇到这个点的时候,也要注意要用它的fa结点。 代码: #include<bits/s

Z7784562的博客 295
上一篇: 【HNOI 2004】 敲砖块 解题报告
下一篇: 【NOIP 2016】 组合数问题 解题报告
Mario_sz
博客等级 码龄10年 12粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值