P1041 传染病控制

说实话这种暴力我还是头一次见,每次病毒都会往下传染一层;

数据范围小,我们可以直接枚举当前层保护谁就好了;

用vector 记录相同层数的节点;维护已经断了的点;

如果超出最底层或者都已经被保护就更新答案;

#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=;
vector<int> v[maxn];
int pre[maxn],last[maxn],other[maxn],l; void add(int x,int y)
{
l++;
pre[l]=last[x];
last[x]=l;
other[l]=y;
} int n,m; int siz[maxn],dep[maxn]; int father[maxn]; int madep;
void dfs1(int x,int fa)
{
siz[x]=;
dep[x]=dep[fa]+;
father[x]=fa;
madep=max(madep,dep[x]);
for(int p=last[x];p;p=pre[p])
{
int v=other[p];
if(v==fa) continue;
dfs1(v,x);
siz[x]+=siz[v];
}
} int vis[maxn]; int ans; void dfs(int x,int sum)
{
if(x==madep+)
{
ans=min(ans,sum);
return ;
}
bool flag=;
for(int i=;i<v[x].size();i++)
{
if(vis[father[v[x][i]]])//chosen not ill
{
vis[v[x][i]]=;
}
else {
vis[v[x][i]]=;
flag=;
}
}
if(!flag)
{
ans=min(ans,sum);
return ;
} for(int i=;i<v[x].size();i++)
{
int u=v[x][i];
if(vis[u]) continue;
vis[u]=;
dfs(x+,sum-siz[u]);
vis[u]=;
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
dfs1(,);
for(int i=;i<=n;i++)
{
v[dep[i]].push_back(i);
}
ans=n;
dfs(,n);
printf("%d",ans);
return ;
}

P1041 传染病控制——暴力遍历所有相同深度的节点的更多相关文章

  1. C++实现二叉树的基本操作:建立、遍历、计算深度、节点数、叶子数等

    题意: 代码实现: #include<iostream> #include<queue> #include<stack> using namespace std; ...

  2. 【搜索】P1041 传染病控制

    题目链接:P1041 传染病控制 题解: 这个题目是看别人的博客做出来的,其实挺不错的一个题目,考察的东西挺多的, 一个dfs可以处理5个东西: 1.找出父亲 2.找出深度 3.每一层的节点,存进Ve ...

  3. Luogu P1041 传染病控制(搜索)

    P1041 传染病控制 题意 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这 ...

  4. P1041 传染病控制(dfs)

    P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...

  5. 洛谷 P1041 传染病控制

    P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...

  6. [luogu]P1041 传染病控制[dfs]

    [luogu]P1041 传染病控制 ——!x^n+y^n=z^n 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的 ...

  7. P1041 传染病控制【暴搜】

    P1041 传染病控制 提交 10.78k 通过 3.74k 时间限制 1.00s 内存限制 125.00MB 题目提供者CCF_NOI 难度提高+/省选- 历史分数100 提交记录 查看题解 标签 ...

  8. 2.遍历XML即添加修改节点

    1.xml <?xml version="1.0" encoding="utf-8" ?> <stories> <story ac ...

  9. java遍历树(深度遍历和广度遍历

    java遍历树如现有以下一颗树:A     B          B1               B11          B2               B22     C          C ...

随机推荐

  1. node+mysql+vue+express项目搭建

    第一步:项目搭建之前首先需要安装node环境和MySQL数据库. 在已经完成上述的条件下开始进行以下操作: npm install @vue/cli -g   (-g 代表全局安装) 初始化项目  v ...

  2. 结合模板导出PDF文件

    @Action("report_exportJasperPdf")    public String exportJasperPdf() throws Exception{     ...

  3. Winform开发1

    VS的Winform开发中,TextBox可能拖过来的时候不能改变其高度,这就要在其属性Multiline为True.

  4. Mysql中decode函数的几种用法

    1.使用decode判断字符串是否一样 decode(value,if1,then1,if2,then2,if3,then3,...,else) 含义为 IF 条件=值1 THEN RETURN(va ...

  5. Navicat Premium12激活教程

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 先到官网下载Navicat,然后安装(怎么安装就不阐述了). 然后,到Github上下载作者发 ...

  6. array_reduce() 与 array_map()

    相似部分: 二者同为 处理数组函数,可遍历 数组中的每一个元素, 对其通过 function callback(){} 处理. 不同处: 参数: array_reduce( array, callba ...

  7. WinServer-文件共享端口

    When turning on Firewall, please assure that “File and Printer Sharing” on current network profile i ...

  8. Python_变量作用域

    1.变量作用域: def get_apple(name,*b): global totalCount totalCount=0 for num in b: print('............... ...

  9. jquery复杂节点获取

    jquery.find方法 1 $("div").find(".1").css({"color":"red"," ...

  10. HL7入门书

    由我翻译HL7书,写给大忙人的HL7 链接:https://pan.baidu.com/s/16MkTj3EIDfFpqRCAIbiC2w 提取码:ndfw