제출 #1170844

#제출 시각아이디문제언어결과실행 시간메모리
1170844JelalTkm여행하는 상인 (APIO17_merchant)C++20
12 / 100
10 ms1856 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O3") #pragma GCC target ("sse4") using namespace std; #define int long long int const int N = 1e6 + 10; const int md = 1e9 + 7; const int INF = 1e12; vector<int> dijkstra(vector<vector<pair<int, int>>> &g, int start) { vector<int> dist(g.size(), INF); vector<bool> visited(g.size()); set<pair<int, int>> q; dist[start] = 0; q.insert({0, start}); while (!q.empty()) { int v = (*q.begin()).second; q.erase(q.begin()); if (!visited[v]) for (auto i : g[v]) { dist[i.first] = min(dist[i.first], dist[v] + i.second); if (!visited[i.first]) q.insert({dist[i.first], i.first}); } visited[v] = 1; } return dist; } int32_t main(int32_t argc, char *argv[]) { ios::sync_with_stdio(false); cin.tie(nullptr); int T = 1; // cin >> T; while (T--) { int n, m, k; cin >> n >> m >> k; vector<vector<int>> b(n + 1, vector<int> (k + 1)), s(n + 1, vector<int> (k + 1)); for (int i = 1; i <= n; i++) { for (int j = 1; j <= k; j++) cin >> b[i][j] >> s[i][j]; } vector<vector<pair<int, int>>> g(n + 1, vector<pair<int, int>> ()), rg(n + 1, vector<pair<int, int>> ()); for (int i = 0; i < m; i++) { int u, v, w; cin >> u >> v >> w; g[u].push_back({v, w}); rg[v].push_back({u, w}); } vector<vector<int>> dist(2, vector<int> ()); dist[0] = dijkstra(g, 1); dist[1] = dijkstra(rg, 1); int ans = 0; for (int i = 2; i <= n; i++) { for (int j = 1; j <= k; j++) { if (s[i][j] != -1 && b[1][j] != -1 && (s[i][j] - b[1][j]) > 0) { ans = max(ans, (s[i][j] - b[1][j]) / (dist[0][i] + dist[1][i])); } } } cout << ans << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...