Submission #634727

#TimeUsernameProblemLanguageResultExecution timeMemory
634727mrkhan2000Cheap flights (LMIO18_pigus_skrydziai)C++17
0 / 100
1991 ms262144 KiB
#include <bits/stdc++.h>
#define ll long long
#define MOD 1000000007
using namespace std;

const int mxN = (int)3e5;
set<int> adj[mxN];
map<pair<int,int>, ll> w;

void solve() {
	int N, E; cin >> N >> E;
	vector<ll> ws(N);
	for(int i = 0; i < E; i++) {
		int U, V, P;
		cin >> U >> V >> P;
		--U, --V;
		ws[U] += P;
		ws[V] += P;
		adj[U].insert(V);
		adj[V].insert(U);
		w[{U,V}] = P;
		w[{V,U}] = P;
	}
	ll ans = *max_element(ws.begin(), ws.end());
	set<set<int>> cycles;
	for(int i = 0; i < N; i++) {
		set<int> visited;
		for(int v : adj[i]) {
			for(int n : visited) {
				if(adj[v].find(n) != adj[v].end()) {
					set<int> cycle = {i, v, n};
					if(cycles.find(cycle) == cycles.end()) {
						ans = max(ans, w[{i,v}] + w[{v,n}] + w[{i,n}]);
						cycles.insert(cycle);
					}
				}
			}
			visited.insert(v);
		}
	}
	cout << ans << '\n';
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
#ifdef LOCAL
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
	int test_cases = 1;
	// cin >> test_cases;
	for(int test_case = 1; test_case <= test_cases; test_case++) {
		// cout << "Case #" << test_case << ": ";
		solve();
	}
	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...