码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-10-24 20:04:25      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:没有   i++   color   print   停止   stdout   struct   sum   tor   

/*codevs 1091 搜索 几个月之前写的70分 今天又写了一遍 并且找到了错误 */
#include<cstdio>
#include<vector>
#define maxn 310
using namespace std;
int n,m,num,head[maxn],fa[maxn],ans=0x7fffffff,f[maxn];
vector<int>G[maxn],Son[maxn];
struct node{
    int v,pre;
}e[maxn*2];
void Add(int from,int to){
    num++;e[num].v=to;
    e[num].pre=head[from];
    head[from]=num;
}
void Build(int now,int from,int dep){
    G[dep].push_back(now);fa[now]=from;
    for(int i=head[now];i;i=e[i].pre){
        int v=e[i].v;
        if(v!=from){
            Son[now].push_back(v);
            Build(v,now,dep+1);
        }
    }
}
void Dfs(int c,int sum){//当前深度 已经挂掉几个 
    int num=0;
    if(sum>=ans)return;
    for(int i=0;i<G[c].size();i++){
        int x=G[c][i];
        if(f[x]==0)num++;//会挂掉的人数 
    }
    if(num==0){//没有人会挂掉 停止搜索 
        ans=min(ans,sum);return;
    }
    for(int i=0;i<G[c].size();i++){
        int x=G[c][i];
        if(f[x]){
            for(int k=0;k<Son[x].size();k++)
                f[Son[x][k]]=1; 
        }
    }
    for(int i=0;i<G[c].size();i++){
        int x=G[c][i];if(f[x])continue;
        for(int k=0;k<Son[x].size();k++)
            f[Son[x][k]]=1;
        f[x]=1;Dfs(c+1,sum+num-1);f[x]=0;
        for(int k=0;k<Son[x].size();k++)
            f[Son[x][k]]=0;
    }
    for(int i=0;i<G[c].size();i++){//回溯 回溯 回溯 要 彻底 
        int x=G[c][i];
        if(f[x]){
            for(int k=0;k<Son[x].size();k++)
                f[Son[x][k]]=0;
        }
    }
    
}
int main()
{
    freopen("epidemic.in","r",stdin);
    freopen("epidemic.out","w",stdout);
    scanf("%d%d",&n,&m);
    int u,v;
    for(int i=1;i<=m;i++){
        scanf("%d%d",&u,&v);
        Add(u,v);Add(v,u);
    }
    Build(1,0,0);Dfs(1,1);
    printf("%d\n",ans);
    return 0;
}

 

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

标签:没有   i++   color   print   停止   stdout   struct   sum   tor   

原文地址:http://www.cnblogs.com/yanlifneg/p/5994148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!