zoukankan      html  css  js  c++  java
  • 【csp模拟赛九】--dfs2

      dfs

    代码:

    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    using namespace std;
    int n,m,p,q,ans1,ans2,len;
    int ans[35],sum[35];
    bool ok[35];
    struct haochi
    {
    	int zl,jg,ctb;  
    	int tot,dr[35];
    	friend bool operator < (const haochi &x,const haochi &y)
    	{ return x.zl<y.zl; }
    }yu[35];
    void dfs(int hao,int lei,int qian)
    {
    	if(qian>m)return;
    	if(hao==n+1)
    	{
    		if((lei>ans1)||(lei==ans1&&qian>ans2))
    		{
    			len=0;
    			for(int i=1;i<=n;++i)
    			if(ok[i])ans[++len]=i;
    			ans1=lei;
    			ans2=qian;
    		}
    		return;
    	}
    	if(lei+(n-hao+1)<ans1 || (lei+(n-hao+1) ==ans1 && qian+sum[hao]<=ans2))return;
    	if(yu[hao].ctb)
    	{
    		dfs(hao+1,lei,qian);
    		return;
    	}
    	ok[hao]=1;
    	for(int i=1;i<=yu[hao].tot;++i)yu[yu[hao].dr[i]].ctb++;
    	dfs(hao+1,lei+1,qian+yu[hao].jg);
    	ok[hao]=0;
    	for(int i=1;i<=yu[hao].tot;++i)yu[yu[hao].dr[i]].ctb--;
    
    	dfs(hao+1,lei,qian);
    }
    int main()
    {
    	freopen("fish.in","r",stdin);
    	freopen("fish.out","w",stdout);
    	cin>>m>>n;
    	for(int i=1;i<=n;++i) scanf("%d%d",&yu[i].zl,&yu[i].jg);
    	sort(yu+1,yu+1+n);
    	for(int i=n;i>=1;i--)sum[i]=sum[i+1]+yu[i].jg;
    	while(scanf("%d%d",&p,&q)&&p&&q)
    	{
    		yu[p].dr[++yu[p].tot]=q;
    		yu[q].dr[++yu[q].tot]=p;
    	}
    	dfs(1,0,0);
    	cout<<ans1<<" "<<ans2<<endl;
    	for(int i=1;i<=len;i++)printf("%d
    ",ans[i]);
    	fclose(stdin);fclose(stdout);
    	return 0;
    }
    /*
    170 7
    1 70
    2 50
    3 30
    4 40
    5 40
    6 30
    7 20
    1 4
    1 7
    3 4
    3 5
    5 7
    6 7
    0 0
    */
    
  • 相关阅读:
    Linux进程关系
    ambari 卸载脚本
    CentOS-7.2安装Ambari-2.6.1
    MYSQL57密码策略修改
    CentOS7 离线安装MySQL
    centos 安装mysql Package: akonadi-mysql-1.9.2-4.el7.x86_64 (@anaconda)
    mysql 数据备份
    spring-boot-starter-thymeleaf对没有结束符的HTML5标签解析出错
    ssh: scp命令
    python:os.path
  • 原文地址:https://www.cnblogs.com/yelir/p/11600344.html
Copyright © 2011-2022 走看看