zoukankan      html  css  js  c++  java
  • 【好题】思维+最短路——cf1343E

    /*
    ÉèxÊÇa->b,b->cµÄ½»µã¿ÉÒÔ½«Â·¾¶a->b->cת»¯Îªa->x->b->x->c
    ¿É¼ûx-bÕâ¶Î·¾¶Éϵı߱»ËãÁËÁ½´Î£¬Ö»ÒªÃ¶¾Ùµãx£¬Çó×îС´ð°¸¼´¿É 
    */
    #include<bits/stdc++.h>
    using namespace std;
    #define N 400005
     
    int p[N],n,m,a,b,c;
    long long sum[N]; 
    vector<int>G[N];
    int cmp(int a,int b){return a>b;}
     
    int vis[N],da[N],db[N],dc[N];
    void dfs(int s,int d[]){
        d[s]=0;
        queue<int>q;
        for(int i=1;i<=n;i++)vis[i]=0;
        q.push(s);vis[s]=1;
        while(q.size()){
            int u=q.front();q.pop();
            for(auto v:G[u])
                if(!vis[v]){
                    d[v]=d[u]+1;
                    vis[v]=1;
                    q.push(v);
                } 
        }
    }
     
    int main(){
        int t;cin>>t;
        while(t--){
            
            cin>>n>>m>>a>>b>>c;
            for(int i=1;i<=m;i++)scanf("%d",&p[i]);
            for(int i=1;i<=m;i++){
                int u,v;scanf("%d%d",&u,&v);
                G[u].push_back(v);
                G[v].push_back(u);
            }
            sort(p+1,p+1+m);
            for(int i=1;i<=m;i++)sum[i]=sum[i-1]+p[i];
            for(int i=m+1;i<=2*m;i++)sum[i]=0x3f3f3f3f;
            
            dfs(a,da);dfs(b,db);dfs(c,dc);
            long long ans=0x3f3f3f3f3f3f3f3f;
            for(int i=1;i<=n;i++){
                long long now=0;
                now+=sum[db[i]];
                if(da[i]+db[i]+dc[i]>m)continue;
                now+=sum[da[i]+db[i]+dc[i]];
                ans=min(ans,now);
            } 
            
            cout<<ans<<'
    ';
        
            for(int i=1;i<=n;i++)G[i].clear();
        }
    }
    
    /**
    4 5 3 2 4
    1 2 3 3 
    4 1
    3 4
    1 2
    3 2
    1 3
    */
  • 相关阅读:
    HTTPS原理浅析
    Java8 HashMap源码分析
    Java8 ArrayList源码分析
    Java反射
    Java泛型
    Tensorflow卷积神经网络
    Java8 Stream简介
    java.io与网络通信
    Python实现RNN
    域名系统DNS简介
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12755409.html
Copyright © 2011-2022 走看看