niop 2003 传染病控制 (哎呀我氧化钙 坑了好久的搜索题)
/*
我觉得挺对的啊 实在是考虑不到有什么情况会判不了
70分 就这样吧 - -
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<vector>
#define maxn 310
using namespace std;
int init()
{
int x=;char s=getchar();
while(s<''||s>'')s=getchar();
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x;
}
int n,m,c[maxn],son[maxn][maxn],sum[maxn],g[maxn][maxn],f[maxn];
int size[maxn],fa[maxn],ans=0x3f3f3f3f;
vector<int>so[maxn];
void Build(int i)
{
f[i]=;
for(int j=;j<so[i].size();j++)
{
int Son=so[i][j];
if(f[Son]==)
{
fa[Son]=i;
son[i][++sum[i]]=Son;
Build(Son);
}
}
}
void Dfs(int i,int num)
{
int get=;
if(num>=ans)return;
int Sum=;
for(int j=;j<=size[i];j++)
if(f[fa[g[i][j]]]==)
{
Sum++;
get=;
}
else f[g[i][j]]=;
for(int j=;j<=size[i];j++)
{
if(f[g[i][j]]==)
{
f[g[i][j]]=;
Dfs(i+,num+Sum-);
f[g[i][j]]=;
for(int k=;k<=sum[g[i][j]];k++)
f[son[g[i][j]][k]]=;
}
}
if(get==)
{
ans=min(ans,num);
return;
}
}
int main()
{
n=init();m=init();
int x,y;
c[]=;
for(int i=;i<=m;i++)
{
x=init();y=init();
so[x].push_back(y);
so[y].push_back(x);
}
Build();
memset(f,,sizeof(f));
size[]=;g[][]=;
for(int i=;i<=n;i++)
for(int j=;j<=sum[i];j++)
{
int t=c[i]+;
c[son[i][j]]=t;
g[t][++size[t]]=son[i][j];
}
Dfs(,);
printf("%d\n",ans);
return ;
}
/*
看了题解之后的 感觉思路和自己的差不多 只不过这样清晰多了
(好吧 不止清晰 .....100分 -)
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#define maxn 310
using namespace std;
int init()
{
int x=;char s=getchar();
while(s<''||s>'')s=getchar();
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x;
}
int n,m,Max_c,son[maxn][maxn],sum[maxn],c[maxn];
int ans=0x3f3f3f3f,num=,f[maxn];
vector<int>so[maxn];
void Build(int i)
{
f[i]=;
for(int j=;j<so[i].size();j++)
{
int Son=so[i][j];
if(f[Son]==)
{
son[i][++sum[i]]=Son;
Build(Son);
}
}
}
void Dfs(int p)
{
int get=;
if(num>=ans)return;
int Sum=;
for(int i=;i<=n;i++)
if(c[i]==p)
for(int j=;j<=sum[i];j++)
{
get=;
c[son[i][j]]=p+;
num++;
}
num--;
for(int i=;i<=n;i++)
if(c[i]==p+)
{
c[i]=;
Dfs(p+);
c[i]=p+;
}
num++;
for(int i=;i<=n;i++)
if(c[i]==p+)
{
c[i]=;num--;
}
if(get==)
{
ans=min(ans,num);
return;
}
}
int main()
{
n=init();m=init();
int x,y;
c[]=;
for(int i=;i<=m;i++)
{
x=init();y=init();
so[x].push_back(y);
so[y].push_back(x);
}
Build();
for(int i=;i<=n;i++)
for(int j=;j<=sum[i];j++)
{
int t=c[i]+;
Max_c=max(Max_c,t);
c[son[i][j]]=t;
}
memset(c,,sizeof(c));
c[]=;
Dfs();
printf("%d\n",ans);
return ;
}
niop 2003 传染病控制 (哎呀我氧化钙 坑了好久的搜索题)的更多相关文章
- [COGS 0107][NOIP 2003] 传染病控制
107. [NOIP2003] 传染病控制 ★★★ 输入文件:epidemic.in 输出文件:epidemic.out 简单对比时间限制:1 s 内存限制:128 MB [问题背景] ...
- noip 2003 传染病控制(历史遗留问题2333)
/*codevs 1091 搜索 几个月之前写的70分 今天又写了一遍 并且找到了错误 */ #include<cstdio> #include<vector> #define ...
- 【填坑】bzoj3224 splay裸题
人生第一道splay不出所料是一道裸题,一道水题,一道2k代码都不到的题 #include <cstdio> ,n,p,q; ],c[][],size[],sp[]; void rot(i ...
- 【BZOJ 1507】【NOI 2003】&【Tyvj P2388】Editor 块状链表模板题
2016-06-18 当时关于块状链表的想法是错误的,之前维护的是一个动态的$\sqrt{n}$,所以常数巨大,今天才知道原因TwT,请不要参照这个程序为模板!!! 模板题水啊水~~~ 第一次写块状链 ...
- [NOIP补坑计划]NOIP2017 题解&做题心得
终于做完了…… 场上预计得分:?(省一分数线:295) 由于看过部分题解所以没有预计得分qwq 题解: D1T1 小凯的疑惑 题面 震惊!一道小学奥数题竟难倒无数高中考生! 欢迎大家以各种姿势*和谐* ...
- [NOIP补坑计划]NOIP2016 题解&做题心得
感觉16年好难啊QAQ,两天的T2T3是不是都放反了啊…… 场上预计得分:100+80+100+100+65+100=545(省一分数线280) ps:loj没有部分分,部分分见洛咕 题解: D1T1 ...
- [NOIP补坑计划]NOIP2015 题解&做题心得
感觉从15年开始noip就变难了?(虽然自己都做出来了……) 场上预计得分:100+100+60~100+100+100+100=560~600(省一分数线365) 题解: D1T1 神奇的幻方 题面 ...
- [NOIP补坑计划]NOIP2014 题解&做题心得
六道普及组题,没啥好说的 场上预计得分:100+100+100+100+100+100=600(省一分数线490) (AK是不可能AK的,这辈子不可能AK的) 题解: D1T1 生活大爆炸版石头剪刀布 ...
- [NOIP补坑计划]NOIP2013 题解&做题心得
场上预计得分:100+100+100+100+100+60=560(省一分数线410) 五道傻逼题+一道大搜索题…… 题解: D1T1 转圈游戏 题面 水题送温暖~ #include<algor ...
随机推荐
- Tornado的一个开源社区
https://link.zhihu.com/?target=http%3A//www.tornadoweb.org/en/stable/ 基于Tornado的一个开源社区 GitHub - shiy ...
- 2013 年 —— Facebook 在开源方面的工作介绍
自从 Facebook 的第一行PHP代码,第一句 MySQL 的 INSERT 语句,开源就已经是我们工程哲学中的一个重要的部分. 现在,我们使用.维护并为大量的主要项目做出了贡献——涉及多种领域如 ...
- An Attempt to Understand Boosting Algorithm(s)
An Attempt to Understand Boosting Algorithm(s) WELCOME! Here you will find daily news and tutorials ...
- js/bat批处理调用谷歌浏览器chrome批量打开网页测试web性能
批处理批量打开网页 其实用java就可以搞定,但是这么一个轻巧的测试,js或者bat批处理去一次性打开几百个网页测试一下页面没必要上java 两者的区别,js的话,只能打开多个浏览器实例,不方便查看效 ...
- Ombrophobic Bovines
poj2391:http://poj.org/problem?id=2391 题意:一个人有n个农场,每个农场都一个避雨的地方,每个农场有一些牛,每个避雨的地方能容纳牛的数量是有限的.农场之间有一些道 ...
- 【POJ】1816 Wild Words
DFS+字典树.题目数据很BT.注意控制DFS深度小于等于len.当'\0'时,还需判断末尾*.另外,当遇到*时,注意讨论情况. #include <iostream> #include ...
- a great tool for automatically formating your code!
1. make your own format file at your project's root or file's folder. (The clang-format will automat ...
- LVS+Keepalived+Nginx+Tomcat高可用负载均衡集群配置(DR模式,一个VIP,多个端口)
一.概述 LVS作用:实现负载均衡 Keepalived作用:监控集群系统中各个服务节点的状态,HA cluster. 配置LVS有两种方式: 1. 通过ipvsadm命令行方式配置 2. 通过Red ...
- Light OJ 1025 - The Specials Menu(区间DP)
题目大意: 给你一个字符串,问有多少种方法删除字符,使得剩下的字符是回文串. 有几个规定: 1.空串不是回文串 2.剩下的字符位置不同也被视为不同的回文串.如:AA有三种回文串 A, A, A ...
- 嵌入式 linux 查看内存
在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux下查看内存使用情况的free命令: [root@scs- ...