제출 #1139383

#제출 시각아이디문제언어결과실행 시간메모리
1139383teo_55Cheap flights (LMIO18_pigus_skrydziai)C++20
0 / 100
317 ms52128 KiB
#include<iostream> #include<vector> #include<map> #define ll long long const int NMAX=500005; std::vector<ll>v(NMAX); std::map<std::pair<int, int>, ll>mp; std::vector<std::pair<int, ll>>G[NMAX]; std::vector<int>dep(NMAX); ll ans=0; int n, m; void dfs(int node, int parent) { for(auto it:G[node]) { int next=it.first; ll cost=it.second; if(!dep[next]) { dep[next]=dep[node]+1; dfs(next, node); } else if(dep[next]+2==dep[node])//triunghi ans=std::max(ans, cost+mp[{std::min(next, parent),std::max(next, parent)}]+mp[{std::min(parent, node),std::max(parent, node)}]); } } int main() { std::cin>>n>>m; for(int i=0; i<m; ++i) { int from, to, cost; std::cin>>from>>to>>cost; v[from]+=cost; v[to]+=cost; if(to<from) std::swap(to, from); mp[{from, to}]=cost; G[from].emplace_back(to, cost); G[to].emplace_back(from, cost); } for(int i=1; i<=n; ++i) ans=std::max(ans, v[i]); dep[1]=1; dfs(1, 0); std::cout<<ans; 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...