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] 传染病控制的更多相关文章

  1. [COGS 0107][NOIP 2003] 传染病控制

    107. [NOIP2003] 传染病控制 ★★★   输入文件:epidemic.in   输出文件:epidemic.out   简单对比时间限制:1 s   内存限制:128 MB [问题背景] ...

  2. 【COGS 254】【POI 2001】交通网络图

    http://www.cogs.top/cogs/problem/problem.php?pid=254 dist[i]表示能最早到达i点的时间.这样就可以用最短路模型来转移了. #include&l ...

  3. 【COGS】894. 追查坏牛奶

    http://cojs.tk/cogs/problem/problem.php?pid=894 题意:n个点m条边的加权网络,求最少边数的按编号字典序最小的最小割.(n<=32, m<=1 ...

  4. 【COGS】147. [USACO Jan08] 架设电话线(二分+spfa)

    http://cojs.tk/cogs/problem/problem.php?pid=147 学到新姿势了orz 这题求的是一条1-n的路径的最大路径最小. 当然是在k以外的. 我们可以转换一下. ...

  5. 【COGS & USACO Training】710. 命名那个数字(hash+水题+dfs)

    http://cojs.tk/cogs/problem/problem.php?pid=710 近日开始刷水... 此题我为了练一下hash...但是hash跑得比暴力还慢.. 不言而喻... #in ...

  6. 【COGS & USACO】896. 圈奶牛(凸包)

    http://cojs.tk/cogs/problem/problem.php?pid=896 我的计算几何入门题... 看了看白书的计算几何部分,,恩好嘛.. 乃们都用向量!!!! 干嘛非要将2个点 ...

  7. 【COGS】714. USACO 1.3.2混合牛奶(贪心+水题)

    http://cojs.tk/cogs/problem/problem.php?pid=714 在hzwer的刷题记录上,默默地先跳过2题T_T...求凸包和期望的..T_T那是个啥..得好好学习 看 ...

  8. NOIP2003 传染病控制

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

  9. Cogs 97. [NOIP2007] 树网的核 Floyd

    题目: http://cojs.tk/cogs/problem/problem.php?pid=97 97. [NOIP2007] 树网的核 ★☆   输入文件:core.in   输出文件:core ...

随机推荐

  1. 机器学习之Bagging与随机森林笔记

    集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能.这对“弱学习器”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器.虽然从理论上来 ...

  2. Scala 面向对象编程之类

    定义一个简单的类 // 定义类,包含field以及方法 class HelloWorld { private var name = "leo" def sayHello() { p ...

  3. Linux权限管理:setUID、setGID 和 Sticky BIT

    1.setUID.setGID 和 Sticky BIT 的功能详解 setuid 功能: 1.只有可执行的二进制文件程序才能设定 SUID 权限(前提) 2.命令执行者要对该程序有执行(x)权限(必 ...

  4. AJAX 调用WebService 、WebApi 增删改查

    WebService 页面: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3 ...

  5. hdu 2102 a计划问题。。 双层dfs问题

    Problem Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长 ...

  6. 如何导出robotframework的工程

    不知道是不是只有我一个小白,自己折腾了很久,也百度了很久,不知道怎么导出哇.现在来扫扫盲罗.我拿自己的项目举例:找到我的RF工程目录可以看到下面有3个项目,直接拷贝你想要的项目就ok啦,是不是so e ...

  7. 解决在web.xml中配置server服务器启动失败问题

    一.问题"Server Tomacat v8.5 Server at locallhost failed to start" 二.解决方法:删除注释@webServlet 三.分析 ...

  8. Jerry带您了解Restful ABAP Programming模型系列之三:云端ABAP应用调试

    Jerry的Restful ABAP Programming模型介绍系列的前两篇文章: 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用 Jerry带 ...

  9. 【Mybatis】缓存

    一.概述 1.1 缓存的意义 1.2 mybatis持久层缓存 二.一级缓存 2.1 原理 2.2 一级缓存配置 一级缓存测试 三.二级缓存 3.1 原理 3.2 mybatis二级缓存配置 3.3 ...

  10. 数据库事务ACID特性(原子性、一致性、隔离性、持久性)

    ACID特性: 原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability) 原子性:一个事务必须被视为一个不可分割的最小工作单元,整个 ...