Submission #969725

#TimeUsernameProblemLanguageResultExecution timeMemory
969725momo50Cities (BOI16_cities)C++14
100 / 100
3198 ms75772 KiB
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll dist[100007][1<<6];
bool vis[100007][1<<6];
vector<pair<int,ll>> g[100007];
priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<pair<ll,int>>> pq;

int main()
{
    cin.tie(nullptr)->ios::sync_with_stdio(false);

    int n,k,m,a;
    cin>>n>>k>>m;

    for(int i=1;i<=n;i++)
        for(int j=0;j<(1<<k);j++)
            dist[i][j]=1e17+7;
    for(int i=0;i<k;i++)
    {
        int a;
        cin>>a;
        dist[a][1<<i]=0;
    }
    for(int i=0;i<m;i++)
    {
        int u,v,w;
        cin>>u>>v>>w;
        g[u].emplace_back(v,w);
        g[v].emplace_back(u,w);
    }


    for(int mask=1;mask<(1<<k);mask++)
    {
        for(int i=0;i<k;i++)
        {
            int thisM=1<<i;
            if(!(thisM&mask))continue;
            int Nothis=(mask^thisM);
            for(int j=1;j<=n;j++)
                dist[j][mask]=min(dist[j][mask],dist[j][thisM]+dist[j][Nothis]);
        }
        for(int i=1;i<=n;i++)
        {
            pq.emplace(dist[i][mask],i);
        }
        while(!pq.empty())
        {
            int u,v,w;
            u=pq.top().second;
            pq.pop();
            for(auto& [v,w]:g[u])
            {
                if(dist[v][mask]>dist[u][mask]+w)
                {
                    dist[v][mask]=dist[u][mask]+w;
                    pq.emplace(dist[v][mask],v);
                }
            }
        }
    }


    ll ans=LLONG_MAX;
    for(int i=1;i<=n;i++)
    {
        ans=min(ans,dist[i][(1<<k)-1]);
    }
    cout<<ans;
    return 0;
}

Compilation message (stderr)

cities.cpp: In function 'int main()':
cities.cpp:53:23: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   53 |             for(auto& [v,w]:g[u])
      |                       ^
cities.cpp:50:19: warning: unused variable 'v' [-Wunused-variable]
   50 |             int u,v,w;
      |                   ^
cities.cpp:50:21: warning: unused variable 'w' [-Wunused-variable]
   50 |             int u,v,w;
      |                     ^
cities.cpp:13:15: warning: unused variable 'a' [-Wunused-variable]
   13 |     int n,k,m,a;
      |               ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...