首页 > 其他分享 >acwing 529 宝藏

acwing 529 宝藏

时间:2022-11-05 23:36:04浏览次数:41  
标签:int S2 inf s2 宝藏 529 acwing

给一个图,选定一个点为起点,求一个生成树,代价和最小(跑一条长度为z的边的代价:z*d ,d是起点的深度)

n<=12

 

对于一个状态S, 由S2,S-S2组成,其中S2的点深度为d +1

 

 f[u][d][s] = f[i][d+1][s2] + f[u][d][s-s2] + a[u][i] * d

 

#include <bits/stdc++.h>
using namespace std ;
 const int N=15,inf=0x3f3f3f3f;
 int f[N][N][1<<N],n,m,a[N][N];
 int vis[N][N][1<<N];
 
 int st(int x){
     return 1<<(x-1);
 }
 int dp(int u,int d,int s){
     int &t=f[u][d][s];
     if(vis[u][d][s]) return t; vis[u][d][s]=1;
     if(s==0) return t=0;
     t=inf;
     
     for(int i=1;i<=n;i++)
      if(a[u][i]!=inf && (s&st(i)))
      for(int j=s;j;j=(j-1)&s){
          if(j&st(i))
          t=min(t,dp(i,d+1,j-st(i))+dp(u,d,s-j)+d*a[u][i]);
      }
      return t;
 }
 signed main(){
     memset(a,0x3f,sizeof a);
     int i,x,y,z;
      cin>>n>>m;
      for(i=1;i<=m;i++) 
      cin>>x>>y>>z,a[x][y]=a[y][x]=min(a[x][y],z);
      int ans=inf;
      for(i=1;i<=n;i++) 
       ans=min(ans,dp(i,1,(1<<n)-1-st(i)));
     cout<<ans;
 }
 

 

标签:int,S2,inf,s2,宝藏,529,acwing
From: https://www.cnblogs.com/towboa/p/16861678.html

相关文章

  • 时间 Acwing每日一题
    本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我......
  • 2022-11-04 Acwing每日一题
    本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我......
  • [AcWing 788]逆序对的数量
    点击查看代码#include<iostream>usingnamespacestd;constintN=100010;intn;intq[N],tmp[N];typedeflonglongLL;//最坏情况下逆序数为n*(n-1)/2结......
  • [AcWing 787]归并排序
    点击查看代码#include<iostream>usingnamespacestd;constintN=100010;intn;intq[N],tmp[N];voidmerge_sort(intq[],intl,intr){if(l>=r)......
  • [AcWing 786]第k个数
       点击查看代码#include<iostream>usingnamespacestd;constintN=100010;intn,k;intq[N];intquick_sort(intl,intr,intk){if(l==r......
  • AcWing 1208. 翻硬币
    //转换为目标状态#include<iostream>#include<algorithm>#include<cstring>usingnamespacestd;constintN=110;charstart[N];//初始状态charaim[N];//目标......
  • 【AcWing-Linux】05. Git
    Git一、Git简介Git是一个分布式版本控制工具,通常对于软件开发过程中的源代码文件进行管理。通过Git仓库来存储和管理这些文件,Git仓库分为两种:本地仓库:开发人员自己电脑......
  • 2022-11-03 Acwing每日一题
    本系列所有题目均为Acwing课的内容,发表博客即是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我......
  • 【AcWing-Linux】04. SSH
    SSH(SecureShell,安全外壳协议)一、SSH简介SSH为建立在应用层和传输层基础上的安全协议(对数据进行加解密),专为远程登录会话和其他网络服务提供安全性的协议,可以有效防止......
  • AcWing 730. 机器人跳跃问题
    怎样使用二分来做;看题目是否具有二段性或者单调性;单调性属于二段性;怎样看单调性:初始时E0数学归纳法推出:Ei撇都是大于Ei的达到某一个值就一定能够成功,等于maxh;ret......