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勒索事件,全国各地的高校学生纷纷反映,自己的电脑遭到病毒的攻击,文档被加密,壁纸遭到篡改,并 ...
随机推荐
- P3348 [ZJOI2016]大森林(LCT)
Luogu3348 BZOJ4573 LOJ2092 题解 对于每个\(1\)操作建一个虚点,以后的\(0\)操作都连在最近建好的虚点上.这样每次整体嫁接的时候,直接把这个虚点断掉它原来的父亲,再\( ...
- CSS+jQuery实现轮播
CSS+jQuery实现轮播 CSS jQuery 前端 实现功能: 自动轮播: 鼠标放在上面停止轮播: 鼠标放在上面显示左右切换的按钮: 鼠标放在小圆圈上显示对应的图片: 轮播效果图 style. ...
- pandas实例美国人口分析
- Socket通信客户端和服务端代码
这两天研究了下Socket通信,简单实现的客户端和服务端代码 先上winfrom图片,客户端和服务端一样 服务端代码: using System; using System.Collections.G ...
- restTemplate使用
转载博主: https://blog.csdn.net/itguangit/article/details/78825505 https://www.cnblogs.com/zhaoyan001/p/ ...
- linux开机启动服务学习chkconfig命令
选项: --add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据: --del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系 ...
- leetcode 892. 三维形体的表面积
题目描述: 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上. 返回最终形体的表面积. ...
- line-height 150%和1.5的区别
好惨啊,九点多了没事做还不能下班,坑爹的测试啊~~~ 刚才拿这个问题调戏了下部门一位资深前端开发,结果发现,他居然不会,呵呵~~~ 这里就说下吧 html: <div class="p ...
- STM32中管脚利用
如果利用4线SWD则剩余的调试引脚可以作为IO使用: void JTAG_Set(unsigned char Mode){ u32 temp; temp=Mode; temp<<=25; ...
- java && C# 线程
1.多个线程用到同一个资源的话,必须lock 2.为了解决,在竞争的情况下,优先分配资源给A.就是A和B线程都同时在同一时刻需要资源x,然后的话也不清楚系统是具体怎样调度的.或者说怎样调度,都有可 ...