Submission #1238056

#TimeUsernameProblemLanguageResultExecution timeMemory
1238056i_love_mritiCheap flights (LMIO18_pigus_skrydziai)C++20
28 / 100
3097 ms113184 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long

const int mxN = 3e5 + 100;

vector<pair<ll, ll>> adj[mxN];
vector<vector<ll>> edge;
ll cst[mxN];
unordered_map<ll,ll> mp[mxN];


int main(){

	ll n, m, u, v, w, ans = 0;
	cin >> n >> m;

	for(ll i = 0; i < m; ++i){
		cin >> u >> v >> w;
		adj[u].push_back({v, w});
		adj[v].push_back({u, w});
		mp[u][v] = w;
		mp[v][u] = w;
		edge.push_back({u, v, w});
		cst[u] += w, cst[v] += w;
		ans = max({ans, cst[u], cst[v]});
	}

	for(auto it : edge){
		u = it[0], v = it[1], w = it[2];
		if(adj[u].size() > adj[v].size()){
			for(auto it : adj[v]){
				if(mp[u].find(it.first) != mp[u].end()){
					ans = max(ans, w + it.second + mp[u][it.first]);
				}
			}
		}else{
		for(auto it : adj[u]){
				if(mp[v].find(it.first) != mp[v].end()){
					ans = max(ans, w + it.second + mp[v][it.first]);
				}
			}
		}
	}

	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...