Submission #1359420

#TimeUsernameProblemLanguageResultExecution timeMemory
1359420hashimzaderashidShops (NOI24_shops)C++20
0 / 100
0 ms344 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;
vector<vector<pair<ll,ll>>>g(20);
vector<ll>dis(20,1e18);
void djikstra(ll k){
    priority_queue<pair<ll,ll>,vector<pair<ll,ll>>,greater<pair<ll,ll>>>pq;
    pq.push({0,k});
    dis[k] = 0;
    while(!pq.empty()){
        ll v = pq.top().first;
        ll u = pq.top().second;
        pq.pop();
        if(v > dis[u]){
            continue;
        }
        for(auto it : g[u]){
            if(v+it.second < dis[it.first]){
                //cout<<u<<" "<<v<<" "<<it.first<<" "<<it.second<<endl;
                dis[it.first] = v+it.second;
                pq.push({dis[it.first],it.first});
            }
        }
    }
}
int main(){
    ll t,a,b,c,d,e,f;
    cin>>a>>b;
    for(int i = 0;i<b;i++){
        cin>>c>>d>>e;
        g[c].push_back({d,e});
        g[d].push_back({c,e});
    }
    vector<vector<ll>>dk(a+1,vector<ll>(a+1));
    for(int j = 1;j<=a;j++){
        for(int k = 1;k<=a;k++){
            dis[k] = 1e18;
        }
        djikstra(j);
        for(int k = 1;k<=a;k++){
            dk[j][k] = dis[k];
        }
    }
    ll ans = 1e18;
    string st;
    for(int i = 0;i<(1<<a);i++){
        string s;
        s = " "+s;
        ll c1 = 0;
        ll c2 = 0;
        for(int j = 0;j<a;j++){
            if(1&(i>>j)){
                s += 'B';
                c1++;
            }
            else{
                s += 'D';
                c2++;
            }
        }
        if(c1 == 0 or c2 == 0){
            continue;
        }
        ll mx = 0;
        for(int j = 1;j<=a;j++){
            ll mn = 1e18;
            for(int k = 1;k<=a;k++){
                if(s[j] != s[k]){
                    mn = min(mn,dk[j][k]);
                }
            }
            mx = max(mn,mx);
        }
        if(ans > mx){
            st = s;
            ans = mx;
        }
    }
    cout<<ans<<endl;
    for(int i = 1;i<=a;i++){
        cout<<st[i];
    }
}
//By Rashid_Hashimzade
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...