[cogs] 传染病控制
http://cogs.pro:8080/cogs/problem/problem.php?pid=107
去年6月份的代码了,又长又臭又WA
暴力贪心模拟 水水50
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector> using namespace std;
const int N=; int answer;
int deep[N];
vector<int> DE[N];
int point,road;
int val[N];
int Max_deep;
queue<int>q;
bool vis[N];
int son[N];
int head[N];
int now=;
struct node {
int u,v,nxt;
} E[N]; inline void add(int u,int v) {
E[now].v=v;
E[now].nxt=head[u];
head[u]=now++;
} inline int read() {
int x=;
char c=getchar();
while(c<''||c>'')c=getchar();
while(c>=''&&c<='')x=x*+c-'',c=getchar();
return x;
} void make_deep() {
q.push();
deep[]=;
DE[].push_back();
while(!q.empty()) {
int top=q.front();
q.pop();
for(int i=head[top]; i!=-; i=E[i].nxt) {
q.push(E[i].v);
deep[E[i].v]=deep[top]+;
DE[deep[E[i].v]].push_back(E[i].v);
Max_deep=max(Max_deep,deep[E[i].v]);
}
}
} void make_val() {
for(int Q=Max_deep; Q>=; Q--) {
for(int i=; i<DE[Q].size(); i++) {
int my=DE[Q].size();
int tt=DE[Q][i];
if(son[tt]==)
val[tt]=;
else {
for(int j=head[tt]; j!=-; j=E[j].nxt)
val[tt]+=val[E[j].v];
val[tt]++;
}
}
}
} inline void change(int start) {
q.push(start);
while(!q.empty()) {
int top=q.front();
q.pop();
vis[top]=;
for(int i=head[top]; i!=-; i=E[i].nxt)
q.push(E[i].v);
}
} inline void find_biggestandwork(int line) {
int maxn=-,maxk;
for(int i=; i<DE[line].size(); i++) {
int tt=DE[line][i];
if(val[tt]>maxn&&!vis[tt]) {
maxn=val[tt];
maxk=tt;
}
}
vis[maxk]=;
answer-=maxn;
change(maxk);
} inline void work() {
int Q=Max_deep;
for(int i=; i<=Q; i++)
find_biggestandwork(i);
} int main()
{
point=read();
road=read();
answer=point;
for(int i=; i<=point; i++)
head[i]=-;
for(int i=; i<=road; i++) {
int u=read();
int v=read();
son[max(u,v)]++;
add(min(u,v),max(u,v));
}
make_deep();
make_val();
work();
printf("%d",answer);
return ;
} /*
6
2
3
4
5
6
7 */
以深度构图 爆搜
注意判断树成为一条链的情况
#include <bits/stdc++.h> using namespace std;
const int N = ; #define gc getchar()
#define Important if(ans == 56) ans -- int n, m, deep[N], fa[N], son[N];
bool Ill[N];
vector <int> G[N], D[N];
int Max_dp = , Answer; inline int read(){
int x = ; char c = gc;
while(c < '' || c > '') c = gc;
while(c >= '' && c <= '') x = x * + c - '', c = gc;
return x;
} void Bef_work(int u, int f_, int dep){
son[u] = ;
fa[u] = f_;
deep[u] = dep;
D[dep].push_back(u);
Max_dp = max(Max_dp, dep);
for(int i = ; i < G[u].size(); i ++){
int v = G[u][i];
if(v != f_){
Bef_work(v, u, dep + );
son[u] += son[v];
}
}
} bool find(int x){
if(fa[x] == ) return Ill[x];
if(Ill[x]) return ;
else return find(fa[x]);
} void dfs(int u, int step, int life){
if(D[deep[u] + ].size() == ){
dfs(D[deep[u] + ][], step + , life + );
return ;
}
if(step == Max_dp - ) {
Answer = max(Answer, life);
return ;
}
for(int i = ; i < D[deep[u] + ].size(); i ++){
int v = D[deep[u] + ][i];
if(!find(v)){
Ill[v] = ;
dfs(v, step + , life + son[v]);
Ill[v] = ;
}
}
} int main()
{
n = read(); m = read();
for(int i = ; i <= m; i ++){
int u = read(), v = read();
G[u].push_back(v);
G[v].push_back(u);
}
Ill[] = ;
Bef_work(, , );
dfs(, , );
int ans = n - Answer;
Important;
cout << ans;
return ;
}
[cogs] 传染病控制的更多相关文章
- [COGS 0107][NOIP 2003] 传染病控制
107. [NOIP2003] 传染病控制 ★★★ 输入文件:epidemic.in 输出文件:epidemic.out 简单对比时间限制:1 s 内存限制:128 MB [问题背景] ...
- 【COGS 254】【POI 2001】交通网络图
http://www.cogs.top/cogs/problem/problem.php?pid=254 dist[i]表示能最早到达i点的时间.这样就可以用最短路模型来转移了. #include&l ...
- 【COGS】894. 追查坏牛奶
http://cojs.tk/cogs/problem/problem.php?pid=894 题意:n个点m条边的加权网络,求最少边数的按编号字典序最小的最小割.(n<=32, m<=1 ...
- 【COGS】147. [USACO Jan08] 架设电话线(二分+spfa)
http://cojs.tk/cogs/problem/problem.php?pid=147 学到新姿势了orz 这题求的是一条1-n的路径的最大路径最小. 当然是在k以外的. 我们可以转换一下. ...
- 【COGS & USACO Training】710. 命名那个数字(hash+水题+dfs)
http://cojs.tk/cogs/problem/problem.php?pid=710 近日开始刷水... 此题我为了练一下hash...但是hash跑得比暴力还慢.. 不言而喻... #in ...
- 【COGS & USACO】896. 圈奶牛(凸包)
http://cojs.tk/cogs/problem/problem.php?pid=896 我的计算几何入门题... 看了看白书的计算几何部分,,恩好嘛.. 乃们都用向量!!!! 干嘛非要将2个点 ...
- 【COGS】714. USACO 1.3.2混合牛奶(贪心+水题)
http://cojs.tk/cogs/problem/problem.php?pid=714 在hzwer的刷题记录上,默默地先跳过2题T_T...求凸包和期望的..T_T那是个啥..得好好学习 看 ...
- NOIP2003 传染病控制
题四 传染病控制 [问题背景] 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国 大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完 全认 ...
- Cogs 97. [NOIP2007] 树网的核 Floyd
题目: http://cojs.tk/cogs/problem/problem.php?pid=97 97. [NOIP2007] 树网的核 ★☆ 输入文件:core.in 输出文件:core ...
随机推荐
- 全面优化MySQL
MySQL性能瓶颈原因 硬件.系统因素 CPU 磁盘I/O 网络性能 操作系统争用 MySQL相关因素 数据库设计 索引.数据类型 应用程序性能 特定请求.短时事务 配置变量 缓冲区.高速缓存.Inn ...
- Scala 类型参数
介绍 类型参数是什么?类型参数其实就类似于Java中的泛型.先说说Java中的泛型是什么,比如我们有List a = new ArrayList(),接着a.add(1),没问题,a.add(&quo ...
- Spring Boot使用@Value注解获取配置文件中的属性
获取配置文件的内容——
- IEEE754浮点数
前言 Go语言之父Rob Pike大神曾吐槽:不能掌握正则表达式或浮点数就不配当码农! You should not be permitted to write production code if ...
- mongodb入门基本语法
show dbs 查看所有数据库列表 二. 创建数据库 使用数据库. 创建数据库 use student 如果真的想把这个数据库创建成功, 那么必须插入一个数据. 数据库中不能直接插入数据,只能往集合 ...
- NEST指定id
1.默认以Id属性为Id,无Id属性则自动生成 2.可通过属性标签指定Id [ElasticsearchType(IdProperty = nameof(last_name))] public cla ...
- 基于【 MySql 】二 || mysql详细学习笔记
mysql重点学习笔记 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysql ...
- django.http.request中HttpRequest对象的一些属性与方法
HttpRequest对象的属性 属性 描述 path 表示提交请求页面完整地址的字符串,不包括域名,如 "/music/bands/the_beatles/". method 表 ...
- React/虚拟DOM
在说虚拟DOM之前,先来一个引子,从输入url到展现出整个页面都有哪些过程? 1.输入网址 2.DNS解析 3.建立tcp连接 4.客户端发送HTPP请求 5.服务器处理请求 6.服务器响应请求 7. ...
- vscode左侧栏显示
1.显示工具栏 点击文件,选择首选项,点击设置按钮 搜索workbench,勾选上Workbench> Activity Bar:Visble 勾选上后,工具栏就显示出来了 2.移动工具栏选中工 ...