제출 #1268028

#제출 시각아이디문제언어결과실행 시간메모리
1268028ducdevCities (BOI16_cities)C++17
100 / 100
1366 ms40520 KiB
// Author: 4uckd3v - Nguyen Cao Duc #include <bits/stdc++.h> using namespace std; #define all(x) (x).begin(), (x).end() typedef long long ll; typedef pair<int, int> ii; const int MAX_N = 1e5; const int MOD = 1e9 + 7; const ll INF = 1e18; int n, m, k; int ver[5]; ll dp[1 << 5][MAX_N + 5]; vector<ii> adj[MAX_N + 5]; void dijkstra(int mask) { priority_queue<pair<ll, int>> pq; for (int u = 1; u <= n; u++) if (dp[mask][u] != INF) pq.push(make_pair(-dp[mask][u], u)); while (!pq.empty()) { ll d = -pq.top().first; int u = pq.top().second; pq.pop(); for (ii e : adj[u]) { int v = e.first, w = e.second; if (dp[mask][u] + w < dp[mask][v]) { dp[mask][v] = dp[mask][u] + w; pq.push(make_pair(-dp[mask][v], v)); }; }; }; }; int main() { ios_base::sync_with_stdio(0); cin.tie(0); if (fopen("MAIN.INP", "r")) { freopen("MAIN.INP", "r", stdin); freopen("MAIN.OUT", "w", stdout); }; cin >> n >> k >> m; for (int i = 0; i < k; i++) cin >> ver[i]; while (m--) { int u, v, w; cin >> u >> v >> w; adj[u].push_back(ii(v, w)); adj[v].push_back(ii(u, w)); }; for (int mask = 0; mask < (1 << k); mask++) { for (int u = 0; u <= n; u++) dp[mask][u] = INF; }; for (int i = 0; i < k; i++) dp[1 << i][ver[i]] = 0; for (int mask = 1; mask < (1 << k); mask++) { for (int u = 1; u <= n; u++) { for (int subMask = mask; subMask >= 0; subMask = (subMask - 1) & mask) { dp[mask][u] = min(dp[mask][u], dp[mask ^ subMask][u] + dp[subMask][u]); if (subMask == 0) break; }; }; dijkstra(mask); }; cout << *min_element(dp[(1 << k) - 1], dp[(1 << k) - 1] + n + 1); };

컴파일 시 표준 에러 (stderr) 메시지

cities.cpp: In function 'int main()':
cities.cpp:43:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   43 |         freopen("MAIN.INP", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
cities.cpp:44:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |         freopen("MAIN.OUT", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...