• P3959 宝藏


    ————————————————————————————————————————————————————-

    单论搜索来说本题有些虚高,但结合状压思想本来就是一个难点,而且构树上还有一个dfs需要搞就更显得思维含量【误

    写了一个状压搜索,自己还是太弱了,参考了别人的博客,要努力啊

    ————————————————————————————————————————————————————————

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,a,b,c,ans=0x3f3f3f3f,num[15][15],dp[(1<<12)+5],dis[30];
    void dfs(int now)
    {
        for(int i=1;i<=n;i++)
        if(now&(1<<i-1))
        for(int j=1;j<=n;j++)
        if(!(now&(1<<j-1))&&num[i][j]!=1061109567&&(dis[i]*num[i][j]+dp[now]<dp[now|(1<<j-1)]))
        {
            dis[j]=dis[i]+1;
            dp[now|(1<<j-1)]=dis[i]*num[i][j]+dp[now];
            dfs(now|(1<<j-1));
        }
    }
    int main()
    {
        cin>>n>>m;
        memset(num,0x3f,sizeof(num));
        for(int i=1;i<=m;i++)
        {
            cin>>a>>b>>c;
            num[a][b]=num[b][a]=min(num[a][b],c);
        }
        for(int i=1;i<=n;i++)
        {    memset(dp,0x3f,sizeof(dp));
            memset(dis,0x3f,sizeof(dis));
            dp[1<<(i-1)]=0;
            dis[i]=1;
            dfs(1<<(i-1));
            ans=min(dp[(1<<n)-1],ans);
        }
        cout<<ans;
    }
  • 相关阅读:
    Beyond Compare保存快照和CRC比较相结合的方法
    如何在Beyond Compare文本比较时设置书签
    如何使用Navicat for SQLite 触发器
    Navicat Premium 中实用工具介绍
    Beyond Compare查看合并文本后相同内容的方法
    Marriage Match II HDU
    Escape HDU
    kebab HDU
    Task Schedule HDU
    网络流深入
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/11296247.html
Copyright © 2020-2023  润新知