COGS 449. 网络病毒
★★ 输入文件: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”。
【输入样例】
8
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
【输出样例】
2
【数据范围】
对于 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. 网络病毒的更多相关文章
- cogs——555. 网络探测
555. 网络探测 ★☆ 输入文件:ping.in 输出文件:ping.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 当出现网络故障时,我们经常使用“p ...
- [Cogs] 线型网络
题面 http://cogs.pro:8080/cogs/problem/problem.php?pid=6 题解 https://www.zybuluo.com/wsndy-xx/note/1135 ...
- cogs 线型网络(状压dp)
/* 需要好大的空间..... 而且lowbit理解的不是很好 先放到博客里 以后慢慢研究 */ #include<iostream> #include<cstdio> #in ...
- 用C++实现网络编程---抓取网络数据包的实现方法
一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有数据包.抓取网络数据包进行分析有很多用处,如分析网络是否有网络病毒等异常数据,通信协议的分析(数据链路层协议.IP.UDP.TCP.甚至各 ...
- Hacker(25)----病毒攻防之认识病毒
Internet中,计算机病毒是威胁计算机安全的程序.对于计算机病毒,用户不仅需要掌握其基础知识,还要认识常见的病毒及简单病毒制作方法.无论病毒基础还是制作简单病毒,用户需要掌握防御病毒的有效措施和专 ...
- 由"永恒之蓝"病毒而来的电脑科普知识
永恒之蓝病毒事件: 继英国医院被攻击,随后在刚刚过去的5月12日晚上20点左右肆虐中国高校的WannaCry勒索事件,全国各地的高校学生纷纷反映,自己的电脑遭到病毒的攻击,文档被加密,壁纸遭到篡改,并 ...
- AVH IP网络广播系统
AVH IP网络广播系统特点: IP网络广播系统是基于当前已广泛使用的以太网网络平台,充分利用网络平台,如用户处已有网络平台,则无需再布线,完全不同于纯模拟广播.调频寻址广播和数控广播 ...
- 20145301《网络对抗》Exp2 后门原理与实践
20145301<网络对抗>Exp2 后门原理与实践 基础问题回答 例举你能想到的一个后门进入到你系统中的可能方式? 系统或者某些软件自身留下的后门. 钓鱼网站等非正规网站上捆绑下载 例举 ...
- 由"永恒之蓝"病毒而来的电脑知识科普
永恒之蓝病毒事件: 继英国医院被攻击,随后在刚刚过去的5月12日晚上20点左右肆虐中国高校的WannaCry勒索事件,全国各地的高校学生纷纷反映,自己的电脑遭到病毒的攻击,文档被加密,壁纸遭到篡改,并 ...
随机推荐
- HTML5拖拽——将本地文件拖拽到网页中显示
HTML5标准中的提供的用于文件输入输出(I/O)的对象 File: 代表一个文件对象 FileList: 代表一个文件列表,类数组对象 FileReader 用于从文件中提取内容 FileWrite ...
- 什么是Uboot
U-Boot的全称是Universal Boot Loader,遵循GPL条款的开放源码项目. U-Boot的作用是系统引导. U-Boot目前不仅仅支持嵌入式Linux系统的引导(对Linux的支持 ...
- 【笔记】Pandas分类数据详解
[笔记]Pandas分类数据详解 Pandas Pandas分类数据详解|轻松玩转Pandas(5) 参考:Pandas分类数据详解|轻松玩转Pandas(5)
- node js fcoin api 出现 api key check fail : {"status":1090,"msg":"Illegal API signature"}
//主区://ft / btc 不支持市价 买入数量不能小于5个FT 买//ft / eth 支持市价 最小买入eth不能小于0.01 买//ft / usdt 支持市价 最小买入usdt不能小于10 ...
- Windows10下设置Shift+右键增加cmd
https://blog.csdn.net/wyx0712/article/details/82120806
- ansible部署,规划
部署管理服务器 第一步:先检查有没有ssh服务 [root@iZm5eeyc1al5vzh8bo57zyZ ~]# rpm -qf /etc/init.d/sshd openssh-server-5. ...
- 用HTMLParser解析html时报错:No module named 'htmlentitydefs'
python3.6用HTMLParser解析html时报错 No module named 'htmlentitydefs'或No module named 'markupbase' 先上代码 fro ...
- thinkPHP 全局函数
M函数 TP的Model父类,封装的功能比较多,增删改查操作都具备.一些表,比如留言表,comment class CommentModel extends Model { } M('comment' ...
- 信息领域热词分析系统--java爬取CSDN中文章标题即链接
package zuoye1; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLExce ...
- @RequestParam详解以及加与不加的区别
以前写controller层的时候都是默认带上 @RequestParam 的, 今天发现不加@RequestParam 也能接收到参数 下面我们来区分一下加与不加的区别 这里有两种写法 @Reque ...