[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 ...
随机推荐
- 机器学习-EM算法-GMM模型笔记
GMM即高斯混合模型,下面根据EM模型从理论公式推导GMM: 随机变量X是有K个高斯分布混合而成,取各个高斯分布的概率为φ1,φ2,... ,φK,第i个高斯分布的均值为μi,方差为Σi.若观测到随机 ...
- binlogserver搭建
在MySQL 5.7.x版本中,mysqlbinlog工具解析任何一个本地的binlog或relay log时,都不会在mysqlbinlog命令执行结束时追加rollback语句, 但在MySQL ...
- Authorization
授权,也叫访问控制,即在应用中控制谁访问哪些资源(如访问页面/编辑数据/页面操作等).在授权中需了解的几个关键对象:主体(Subject).资源(Resource).权限(Permission).角色 ...
- 撸一个 vue 的截图组件,按比例截取
<template> <div class="clip-img" :style="imgStyle"> <img :src=&qu ...
- tslint 忽略格式检查
// tslint:disable——忽略该行以下所有代码出现的错误提示,可以在文件首行添加达到忽略整个文件的格式提示 // tslint:enable——当前ts文件重新启用tslint// tsl ...
- Python爬虫之BeautifulSoap的用法
1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...
- J.U.C之AQS:CLH同步队列
此篇博客所有源码均来自JDK 1.8 在上篇博客[死磕Java并发]—–J.U.C之AQS:AQS简介中提到了AQS内部维护着一个FIFO队列,该队列就是CLH同步队列. CLH同步队列是一个FIFO ...
- GoAccess 视图化access.log 日志
1.安装GoAccess 工具可以直接使用 apt-get install goaccess 2.使用goaccess命令将日志生成html文件 goaccess 日志路径 -o 输出HTML的路径 ...
- 远程 Linux(Ubuntu 18)添加字体
安装 xshell与xftp 连接xshell 点击 xshell上方工具栏中的xftp图标, 自动连接xftp linux下创建字体目录 su cd / cd usr/share/fonts mkd ...
- Questasim10.6c下载安装教程
questasim作为modelsim的高级版,用着速度还是比modelsim爽很多,基本上所有操作指令都是和modelsim兼容的. 不同版本的vivado兼容的modelsim版本是不一样的,如果 ...