★★   输入文件:virus.in   输出文件:virus.out   简单对比
时间限制:1 s   内存限制:128 MB

【题目描述】 
公元2008年10月31日星期五,笃志者所在的整个机房由于猖獗的病毒一片恐慌。经查证,病毒是由A1机器散播开来的。。这要追溯到29日,笃志者由于病毒被迫从A1机器撤离。 
一想到病毒是从自己的机器传开的,笃志者就心神不宁。他决定搞清楚病毒是怎么散播开来的。事实上,机房内的机器并不是全部都能够互相感染的。笃志者(ceeji)好不容易经过测试得到了机房中各机器间是否连通的图表,就在他马上就要得出结果的时候,大脑突然乱了!问题的严重性在于:如果他不在1s内搞清楚这个问题,机房就会整体瘫痪。现在笃志者求助于你,他需要知道病毒从未感染机房开始,最少入侵几台机器之后,机房就会整体感染。 
【输入格式】 
文件的第一行为一个整数n,第二行至第n+1行为n*n的矩阵(若第i行第j列为1,则机器i能对机器j进行ARP攻击(即感染机器j),若第i行第j列为0,则机器i不能感染机器j)。 
文件名为“2.in”。 
【输出格式】 
输出文件只有一行,为笃志者想知道的最少感染机器数。 
文件名为“2.out”。 
【输入样例】 

0 0 1 0 0 0 0 0 
1 0 0 1 0 0 0 0 
0 1 0 1 1 0 0 0 
0 0 0 0 0 1 0 0 
0 0 0 1 0 0 0 0 
0 0 0 1 0 0 0 0 
0 0 0 1 0 0 0 1 
0 0 0 0 0 0 1 0 
【输出样例】 

【数据范围】 
对于 100% 的数据,n<=1000

求入度为0的强连通分量的个数

一开始手残了。。顺道打上了拓扑排序

屠龙宝刀点击就送

#include <cstdio>
#include <vector>
#define N 10000
using namespace std;
vector<int>G[N];
bool instack[N];
int n,tim,cnt,top,ans,sumcol,c[N],in[N],to[N<<],low[N],dfn[N],col[N],stack[N],head[N],nextt[N<<];
inline int min(int a,int b) {return a>b?b:a;}
inline int max(int a,int b) {return a>b?a:b;}
void tarjan(int x)
{
stack[++top]=x;
low[x]=dfn[x]=++tim;
instack[x]=true;
for(int i=head[x];i;i=nextt[i])
{
int v=to[i];
if(!dfn[v])
{
tarjan(v);
low[x]=min(low[x],low[v]);
}
else if(instack[v]) low[x]=min(low[x],dfn[v]);
}
if(low[x]==dfn[x])
{
sumcol++;
int k;
do{k=stack[top--];instack[k]=false;col[k]=sumcol;} while(k!=x);
}
}
int main(int argc,char *argv[])
{
freopen("virus.in","r",stdin);
freopen("virus.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;++i)
for(int a,j=;j<=n;++j)
{
scanf("%d",&a);
if(a) {nextt[++cnt]=head[i];to[cnt]=j;head[i]=cnt;}
}
for(int i=;i<=n;++i) if(!dfn[i]) tarjan(i);
for(int i=;i<=n;++i)
{
for(int j=head[i];j;j=nextt[j])
{
int v=to[j];
if(col[i]==col[v]) continue;
for(int k=;k<G[col[i]].size();++k)
if(G[col[i]][k]==col[v]) goto flag;
G[col[i]].push_back(col[v]);
in[col[v]]++;
flag:;
}
}
for(int i=;i<=sumcol;++i) if(!in[i]) ans++;
printf("%d\n",ans);
return ;
}

COGS 449. 网络病毒的更多相关文章

  1. cogs——555. 网络探测

    555. 网络探测 ★☆   输入文件:ping.in   输出文件:ping.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]    当出现网络故障时,我们经常使用“p ...

  2. [Cogs] 线型网络

    题面 http://cogs.pro:8080/cogs/problem/problem.php?pid=6 题解 https://www.zybuluo.com/wsndy-xx/note/1135 ...

  3. cogs 线型网络(状压dp)

    /* 需要好大的空间..... 而且lowbit理解的不是很好 先放到博客里 以后慢慢研究 */ #include<iostream> #include<cstdio> #in ...

  4. 用C++实现网络编程---抓取网络数据包的实现方法

    一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有数据包.抓取网络数据包进行分析有很多用处,如分析网络是否有网络病毒等异常数据,通信协议的分析(数据链路层协议.IP.UDP.TCP.甚至各 ...

  5. Hacker(25)----病毒攻防之认识病毒

    Internet中,计算机病毒是威胁计算机安全的程序.对于计算机病毒,用户不仅需要掌握其基础知识,还要认识常见的病毒及简单病毒制作方法.无论病毒基础还是制作简单病毒,用户需要掌握防御病毒的有效措施和专 ...

  6. 由"永恒之蓝"病毒而来的电脑科普知识

    永恒之蓝病毒事件: 继英国医院被攻击,随后在刚刚过去的5月12日晚上20点左右肆虐中国高校的WannaCry勒索事件,全国各地的高校学生纷纷反映,自己的电脑遭到病毒的攻击,文档被加密,壁纸遭到篡改,并 ...

  7. AVH IP网络广播系统

    AVH  IP网络广播系统特点:        IP网络广播系统是基于当前已广泛使用的以太网网络平台,充分利用网络平台,如用户处已有网络平台,则无需再布线,完全不同于纯模拟广播.调频寻址广播和数控广播 ...

  8. 20145301《网络对抗》Exp2 后门原理与实践

    20145301<网络对抗>Exp2 后门原理与实践 基础问题回答 例举你能想到的一个后门进入到你系统中的可能方式? 系统或者某些软件自身留下的后门. 钓鱼网站等非正规网站上捆绑下载 例举 ...

  9. 由"永恒之蓝"病毒而来的电脑知识科普

    永恒之蓝病毒事件: 继英国医院被攻击,随后在刚刚过去的5月12日晚上20点左右肆虐中国高校的WannaCry勒索事件,全国各地的高校学生纷纷反映,自己的电脑遭到病毒的攻击,文档被加密,壁纸遭到篡改,并 ...

随机推荐

  1. 机器学习--最邻近规则分类KNN算法

    理论学习: 3. 算法详述        3.1 步骤:      为了判断未知实例的类别,以所有已知类别的实例作为参照      选择参数K      计算未知实例与所有已知实例的距离      选 ...

  2. C#是类型安全语言

    C#是一种类型安全语言:所有的表达式都解析成某个类型的一个实例,在编译器生成的代码中,只会执行对这个类型来说有效的操作. [优势] 许多错误能在编译时就检测到,确保代码在执行这段代码前是正确的: 生成 ...

  3. Codeforces-C-Grid game(思维)

    You are given a 4x4 grid. You play a game - there is a sequence of tiles, each of them is either 2x1 ...

  4. SecureCRT 遇到一个致命的错误且必须关闭

    1.将报错路径中VanDyke文件夹内的东西删除掉2.运行regedit,在注册表中将HKEY_LOCAL_MACHINA中SOFTWARE里的VanDyke删除3.注册表中打开HKEY_CURREN ...

  5. Linux下Java环境安装配置记录

    下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 两种安装方式: 第一 ...

  6. php数组·的方法-数组检索

    /* * //数组检索函数 * */ //array_keys() 获取数组中所有键名 //array_values() 获取数组中所有键名 $arr6=range('a','e'); print_r ...

  7. springMVC初探视图解析器——InternalResourceViewResolver

    springmvc在处理器方法中通常返回的是逻辑视图,如何定位到真正的页面,就需要通过视图解析器. springmvc里提供了多个视图解析器,InternalResourceViewResolver就 ...

  8. Google Chrome实用插件

    Tempermonkey 打开上面的链接需要KXSW_VPN_FQ,下面提供国内获取方式 下载 Tempermonkey_4.7 [提取码:7019]并解压 打开C:\Users\%USERNAME% ...

  9. C# 序列化(Binary、Xml、Soap)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  10. input类型为file改变默认按钮样式

    改变 input file 样式(input  文件域)是很多前端朋友经常遇到的头疼问题,今天推荐两种改变 input file 样式的两种常用方法: 方法一: <input type=&quo ...