# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
77043 | farukkastamonuda | Cities (BOI16_cities) | C++14 | 2697 ms | 97928 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
//Power Of Ninja Go
#include <bits/stdc++.h>
//#ifdef atom #else #endif
using namespace std;
typedef long long ll; typedef pair<int, int> ii; typedef vector<int> vi; typedef vector< ii > vii;
#define X first
#define Y second
#define pb push_back
const int maxn = 1e5+5;
vii adj[maxn];
ll dp[32][maxn];
int main()
{
int n, k, m; scanf("%d %d %d", &n, &k, &m);
vi imp; imp.resize(k);
for(int i = 0; i< k; i++) scanf("%d", &imp[i]);
for(int i = 0; i< m; i++)
{
int u, v, w; scanf("%d %d %d", &u, &v, &w);
adj[u].pb(ii(v, w));
adj[v].pb(ii(u, w));
}
for(int a = 0; a< 32; a++)
{
for(int u = 1; u<= n; u++) dp[a][u] = 4e18;
}
for(int i = 0; i< k; i++)
{
dp[1<<i][imp[i]] = 0;
}
for(int bit = 1; bit< (1<<k); bit++)
{
for(int part = 0; part< bit; part++)
{
if((part | bit) != bit) continue;
int rem = bit-part;
for(int u = 1; u<= n; u++)
dp[bit][u] = min(dp[bit][u], dp[part][u]+dp[rem][u]);
}
priority_queue< pair<ll, int> > pq;
for(int i = 1; i<= n; i++)
{
if(dp[bit][i] != 4e18)
{
pq.push(make_pair(-dp[bit][i], i));
}
}
while(!pq.empty())
{
ll w = -pq.top().X;
int u = pq.top().Y;
pq.pop();
if(dp[bit][u] != w) continue;
for(auto edge : adj[u])
{
int v = edge.X, w = edge.Y;
if(dp[bit][v]> dp[bit][u]+w)
{
dp[bit][v] = dp[bit][u]+w;
pq.push(make_pair(-dp[bit][v], v));
}
}
}
}
ll res = 4e18;
for(int i = 1; i<= n; i++) res = min(res, dp[(1<<k)-1][i]);
cout << res << endl;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |