Submission #851163

#TimeUsernameProblemLanguageResultExecution timeMemory
851163pakapuCheap flights (LMIO18_pigus_skrydziai)C++17
12 / 100
3049 ms34424 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int ans = 0; vector<int> cost; vector<int> calculated; vector<tuple<int, int, int>> edges; vector<vector<pair<int, int>>> g; int dfs(int u, int depth, int flag) { if(depth >= 1) { return 0; } int curr = 0; for(auto v : g[u]) { cost[v.first] = v.second; calculated[v.first] = flag; curr += v.second; dfs(v.first, depth + 1, flag); } return curr; } void check_triangles(int flag) { for(auto c : edges) { if(calculated[get<0>(c)] == flag && calculated[get<1>(c)] == flag) { //cout << get<0>(c) << ' ' << get<1>(c) << '\n'; ans = max(ans, cost[get<0>(c)] + cost[get<1>(c)] + get<2>(c)); } } } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; cost = vector<int>(n); calculated = vector<int>(n, -1); g = vector<vector<pair<int, int>>>(n); for(int i = 0; i < m; i++) { int from, to, w; cin >> from >> to >> w; from--; to--; g[from].push_back(make_pair(to, w)); g[to].push_back(make_pair(from, w)); edges.push_back(make_tuple(from, to, w)); } ans = 0; for(int i = 0; i < n; i++) { int curr = dfs(i, 0, i + 1); ans = max(ans, curr); check_triangles(i + 1); } 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...