/*
我觉得挺对的啊 实在是考虑不到有什么情况会判不了
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 传染病控制 (哎呀我氧化钙 坑了好久的搜索题)的更多相关文章

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

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

  2. noip 2003 传染病控制(历史遗留问题2333)

    /*codevs 1091 搜索 几个月之前写的70分 今天又写了一遍 并且找到了错误 */ #include<cstdio> #include<vector> #define ...

  3. 【填坑】bzoj3224 splay裸题

    人生第一道splay不出所料是一道裸题,一道水题,一道2k代码都不到的题 #include <cstdio> ,n,p,q; ],c[][],size[],sp[]; void rot(i ...

  4. 【BZOJ 1507】【NOI 2003】&【Tyvj P2388】Editor 块状链表模板题

    2016-06-18 当时关于块状链表的想法是错误的,之前维护的是一个动态的$\sqrt{n}$,所以常数巨大,今天才知道原因TwT,请不要参照这个程序为模板!!! 模板题水啊水~~~ 第一次写块状链 ...

  5. [NOIP补坑计划]NOIP2017 题解&做题心得

    终于做完了…… 场上预计得分:?(省一分数线:295) 由于看过部分题解所以没有预计得分qwq 题解: D1T1 小凯的疑惑 题面 震惊!一道小学奥数题竟难倒无数高中考生! 欢迎大家以各种姿势*和谐* ...

  6. [NOIP补坑计划]NOIP2016 题解&做题心得

    感觉16年好难啊QAQ,两天的T2T3是不是都放反了啊…… 场上预计得分:100+80+100+100+65+100=545(省一分数线280) ps:loj没有部分分,部分分见洛咕 题解: D1T1 ...

  7. [NOIP补坑计划]NOIP2015 题解&做题心得

    感觉从15年开始noip就变难了?(虽然自己都做出来了……) 场上预计得分:100+100+60~100+100+100+100=560~600(省一分数线365) 题解: D1T1 神奇的幻方 题面 ...

  8. [NOIP补坑计划]NOIP2014 题解&做题心得

    六道普及组题,没啥好说的 场上预计得分:100+100+100+100+100+100=600(省一分数线490) (AK是不可能AK的,这辈子不可能AK的) 题解: D1T1 生活大爆炸版石头剪刀布 ...

  9. [NOIP补坑计划]NOIP2013 题解&做题心得

    场上预计得分:100+100+100+100+100+60=560(省一分数线410) 五道傻逼题+一道大搜索题…… 题解: D1T1 转圈游戏 题面 水题送温暖~ #include<algor ...

随机推荐

  1. R语言数据分析

    CSDN博客:包括R语言基础.R语言数据挖掘.hadoop大数据及spark等 http://blog.csdn.net/qq_16365849 R语言及数据分析 http://blog.csdn.n ...

  2. Perl常用特殊变量

    perl 内置变量 $- 当前页可打印的行数,属于Perl格式系统的一部分 $! 根据上下文内容返回错误号或者错误串 $” 列表分隔符 $# 打印数字时默认的数字输出格式 $$ Perl解释器的进程I ...

  3. [BZOJ 1066] [SCOI2007] 蜥蜴 【最大流】

    题目链接:BZOJ - 1066 题目分析 题目限制了高度为 x 的石柱最多可以有 x 只蜥蜴从上面跳起,那么就可以用网络流中的边的容量来限制.我们把每个石柱看作一个点,每个点拆成 i1, i2,从 ...

  4. PCB板可靠性测试方法择要

    在电子设备中PCB板是所有电子设备的核心,其的可靠性程度会直接影响了产品的耐用性和寿命.因此在我们实验室(上海摩尔实验室)的实际工作中遇到了越来越多的针对PCB板的可靠性的测试要求,现根据一些企业的内 ...

  5. Hibernate中的事务隔离

    在我们的项目中,老发现程序报告sesssion is closed或者因数据已经被其他事务修改而导致当前事务无法提交,由于系统的运行用户最多也就几十个人,所以考虑使用严格的事务隔离来防止这种类型的问题 ...

  6. Java NIO API详解

    在JDK 1.4以前,Java的IO操作集中在java.io这个包中,是基于流的同步(blocking)API.对于大多数应用来说,这样的API使用很方便,然而,一些对性能要求较高的应用,尤其是服务端 ...

  7. Linux on Power 上的调试工具和技术

     Linux on Power 上的调试工具和技术 简介: 调试是一项主要的软件开发活动,作为应用程序开发人员,您无法避免对程序进行调试.有效的调试不仅能缩短软件开发周期,而且可以节省成本.本文简要介 ...

  8. AlgorithmsI Programming Assignment 1: PercolationStats.java

    import edu.princeton.cs.algs4.StdOut; import edu.princeton.cs.algs4.StdRandom; import edu.princeton. ...

  9. Snowflake Snow Snowflakes(哈希,大素数取模)

    Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 27277   Accepted: 7197 Description You ...

  10. module_init和init_module的区别

    今天在看CS8900的驱动时,发现其驱动的模块加载函数是init_module(),由于看到大多数的驱动用的模块加载函数大多是module_init()函数,所以一时没缓过神来,总是在找CS8900的 ...