/*
我觉得挺对的啊 实在是考虑不到有什么情况会判不了
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. ios+oc面试题

    ios+oc面试题     浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...

  2. JS获取select选中的值

    var oSel=oFl.getElementsByTagName('select')[0]; oSel.onchange=function(){ var indexselect=oSel.selec ...

  3. [bug]Syntax error, unrecognized expression: input#ctl00$ContentPlaceHolder1$Pager_input

    1.在ie10上浏览页面的时候,突然发现在使用Aspnetpager的页面会有一个bug. 2. 3.查了很多解决方案,最后将vs2013中, 将该勾取消,再次浏览,你会发现就正常了,虽然该功能很强大 ...

  4. 解决方案-Microsoft Visual Studio 2012 已停止工作

    问题: 根本解决方案: 用管理员模式运行. 找到软件的安装目录 \Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe 然后如何保存管理员权限运行呢? ...

  5. ubuntu各版本的区别

    ubuntu.kubuntu以及xubuntu的区别Ubuntu默认是Gnome:KUbuntu用的是KDE,效果比较炫目,但是系统要求也较高XUbuntu用的是Xface,比较轻量,系统要求较低,推 ...

  6. Unity问答——请教一下NGUI的图片转换问题

    这篇博客源自我在泰课在线的回答.链接:http://www.taikr.com/group/1/thread/92 问:请教一下NGUI的图片转换问题 1.NGUI能不能把导入的方形图片转成圆形的(因 ...

  7. [BZOJ 1070] [SCOI2007] 修车 【费用流】

    题目链接:BZOJ - 1070 题目分析 首先想到拆点,把每个技术人员拆成 n 个点,从某个技术人员拆出的第 i 个点,向某辆车连边,表示这是这个技术人员修的倒数第 i 辆车.那么这一次修车对整个答 ...

  8. 我的VSTO之路(五):Outlook初步开发之联系人扩展

    原文:我的VSTO之路(五):Outlook初步开发之联系人扩展 上一讲我们完成对Word的介绍,文本开始,我将着重介绍Outlook.Outlook是微软Office中一个非常实用的工具,尤其在一个 ...

  9. Android中attr自定义属性详解

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:wen=http ...

  10. CSS中的高度

    https://developer.mozilla.org/en-US/docs/Web/API/element.clientHeight Element.clientHeight是只读属性,以像素为 ...