• 1135. 新年好


    • 枚举访问\(5\)个亲戚顺序的全排列
    • 有了全排列后,现在缺少每个亲戚到其他亲戚的最短距离
    • 于是跑\(6\)\(dijkstra\)算法
    const int N=50010;
    vector<PII> g[N];
    int dist[10][N];
    bool vis[N];
    int sta[10];
    bool st[10];
    int n,m;
    int ans=INF;
    
    void dijkstra(int u,int s)
    {
        memset(dist[u],0x3f,sizeof dist[u]);
        memset(vis,0,sizeof vis);
        priority_queue<PII,vector<PII>,greater<PII> > heap;
        dist[u][s]=0;
        heap.push({0,s});
    
        while(heap.size())
        {
            int t=heap.top().second;
            heap.pop();
    
            if(vis[t]) continue;
            vis[t]=true;
    
            for(int i=0;i<g[t].size();i++)
            {
                int j=g[t][i].fi,w=g[t][i].se;
                if(dist[u][j] > dist[u][t] + w)
                {
                    dist[u][j]=dist[u][t]+w;
                    heap.push({dist[u][j],j});
                }
            }
        }
    }
    
    void dfs(int u,int last,int sum)
    {
        if(sum >= ans) return;
        if(u > 5)
        {
            ans=min(ans,sum);
            return;
        }
    
        for(int i=1;i<=5;i++)
            if(!st[i])
            {
                st[i]=true;
                dfs(u+1,i,sum+dist[last][sta[i]]);
                st[i]=false;
            }
    }
    
    int main()
    {
        ios;
        cin>>n>>m;
    
        for(int i=1;i<=5;i++) cin>>sta[i];
    
        while(m--)
        {
            int a,b,c;
            cin>>a>>b>>c;
            g[a].pb({b,c});
            g[b].pb({a,c});
        }
    
        sta[0]=1;
        for(int i=0;i<=5;i++)
            dijkstra(i,sta[i]);
    
        dfs(1,0,0);
    
        cout<<ans<<endl;
        //system("pause");
    }
    
  • 相关阅读:
    加了一句话
    由于数据库 'XXX' 离线,无法打开该数据库。
    Linux命令list
    js 数组去重
    JSON.parse(JSON.stringify()) 实现对对象的深度拷贝,从而互不影响
    docker
    Node child_process Study.2
    node assert模块 Study.1
    git 合并本地分支到远程分支
    Vue 项目搭建
  • 原文地址:https://www.cnblogs.com/fxh0707/p/13737594.html
Copyright © 2020-2023  润新知