【搜索】P1041 传染病控制
题目链接:P1041 传染病控制
题解:
这个题目是看别人的博客做出来的,其实挺不错的一个题目,考察的东西挺多的,
一个dfs可以处理5个东西:
1、找出父亲
2、找出深度
3、每一层的节点,存进Vector里。
4、更新最大深度
5、找出子树的大小
然后再设定一个Find,找父节点。
只要能找到1,说明感染了,否则说明这个节点已经在之前的操作中切断过。
真的不错的一道题。
#include<bits/stdc++.h>
using namespace std;
const int N = ;
vector<int>G[N];
vector<int>V[N];
int Sz[N],dep[N],Pre[N];
int n,m,p,ans,Mx_dep;
bool F[N];
bool Find(int x){
if( x == ) return false;
if( F[x] == ) return true;
else return Find(Pre[x]);
}
void Build(int Now , int Father ){
Pre[Now] = Father; //父节点
dep[Now] = dep[Father] + ; //深度
V[dep[Now]].push_back(Now); //每一层有什么元素
Mx_dep = max( Mx_dep , dep[Now] );//求出最深深度
Sz[Now] = ; //递归求出子树大小
for( auto To : G[Now] ){
if( To == Father ) continue;
Build( To , Now );
Sz[Now] += Sz[To];
}
}
void dfs(int depth,int tot ){
if( depth == Mx_dep + )
return ;
for( auto To : V[depth] ){
if( Find(To) ) continue; //直接被感染
F[To] = ; //尝试切断
ans = max( ans , tot + Sz[To] ) ;
dfs(depth+,tot + Sz[To] );
F[To] = ; //恢复原状
}
}
int main()
{
scanf("%d%d",&n,&p);
for( int i=,u,v ; i<p ; i++ ){
scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
}
Build(,);
dfs(,);
printf("%d\n",n-ans);
return ;
}
/* 7 6
1 2
1 3
2 4
2 5
3 6
3 7 3
*/
【搜索】P1041 传染病控制的更多相关文章
- Luogu P1041 传染病控制(搜索)
P1041 传染病控制 题意 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这 ...
- P1041 传染病控制(dfs)
P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...
- 洛谷 P1041 传染病控制
P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...
- [luogu]P1041 传染病控制[dfs]
[luogu]P1041 传染病控制 ——!x^n+y^n=z^n 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的 ...
- P1041 传染病控制——暴力遍历所有相同深度的节点
P1041 传染病控制 说实话这种暴力我还是头一次见,每次病毒都会往下传染一层: 数据范围小,我们可以直接枚举当前层保护谁就好了: 用vector 记录相同层数的节点:维护已经断了的点: 如果超出最底 ...
- P1041 传染病控制【暴搜】
P1041 传染病控制 提交 10.78k 通过 3.74k 时间限制 1.00s 内存限制 125.00MB 题目提供者CCF_NOI 难度提高+/省选- 历史分数100 提交记录 查看题解 标签 ...
- P1041 传染病控制(noip2003)(搜索)
呃呃呃...真的是惨烈啊... 今天的模拟赛是真的惨..... 本题,正解居然是搜索!!!!!! 蒟蒻自己歪歪了一个貌似是正解但是却连一半都没过的错解. 先解释一下自己的dp思路把. $f[i][u] ...
- 洛谷P1041 传染病控制
解:搜索...... 我们可以每次选择分支少的搜索,或者说,贪心的搜索当前更优的决策. 每一层把能剪的点搞出来,按照度数/SIZ排序,然后依次搜索.加个最优化剪枝就完事了. #include < ...
- [NOIP2003] 提高组 洛谷P1041 传染病控制
题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染病,难以准确判别病毒携带 ...
随机推荐
- 【197】PowerShell 通过 FTP 下载文件
参考:使用 WGET 从FTP上下载文件 在 PowerShell 使用 wget2 工具,代码如下: wget2 ftp://user:password@192.168.14.31/1.jpg 其中 ...
- CodeForces 719A Vitya in the Countryside (水题)
题意:根据题目,给定一些数字,让你判断是上升还是下降. 析:注意只有0,15时特别注意一下,然后就是14 15 1 0注意一下就可以了. 代码如下: #pragma comment(linker, & ...
- UVaLive 6581 && Gym 100299B What does the fox say? (模拟+STL)
题意:给定一些动物的叫声,然后再定某些动物的叫声,让你去除这些叫声后得到的叫声. 析:先存储所有的叫声,然后用map来记录其他的叫声,在输出时再判定一下就好. 代码如下: #pragma commen ...
- 51nod 1062【水题】
直接打表构造啊 #include <stdio.h> #include <string.h> #include <iostream> using namespace ...
- <a>标签 href和onclick
先执行onclick函数,如果onclick函数正常,则跳转到href所指明的url,否则什么事情都不做 还是不行,尚未解决
- springboot&mybatis 增删改查系列(二)
数据库篇 我的数据库名为data0525,数据表名为user,其中有五列uid,uname,upass,usex,umessage.uid为主键并且自动生成,由于是练习表,所以并没有考虑设计的合理性. ...
- 同一台服务器上部署多个Tomcat的配置修改方法
同一服务器部署多个tomcat时,存在端口号冲突的问题,所以需要修改tomcat配置文件server.xml,以tomcat7为例. 首先了解下tomcat的几个主要端口: <Server po ...
- Scipy-数值计算库
Scipy在Numpy的基础上则加了众多的数学计算,科学计算以及工程计算中常用的模块,例如线性代数,常微分方程的数值求解,信号处理,图像处理,系数矩阵等.在本章中,将通过实例介绍Scipy中常用的的一 ...
- 用sublime text3 直接编译C/C++,java
首先你得下载好 这是我之前安装codeblocks时留下的里面有cpp,c++,gcc,g++. 第二步就是建立环境变量 这三个配置完成就ok 了 然后进入sublime text 3中,找到工具(t ...
- python之yaml模块和ddt模块
aml文件是专门用来写配置文件的语言,非常简洁和强大,远比json格式方便. 在PC中新建一个yml/yaml为为缩略名的文件,输入信息见下图 新建一个py文件处理yml文件,直接处理成字典格式 缩进 ...