From 0db4cafb56ac24cf828bb6e403d165e0afb8c62e Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Mon, 18 Nov 2024 12:01:38 +0800 Subject: [PATCH] update --- src/20241118/T541156.cpp | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/20241118/T541156.cpp b/src/20241118/T541156.cpp index e69de29..da141df 100644 --- a/src/20241118/T541156.cpp +++ b/src/20241118/T541156.cpp @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include +#include + +using ll = int64_t; +using std::cin, std::cout; + +const ll maxn=5e5+5, inf{1l<<(sizeof(inf)*8-4)}; +ll n, k, kd[maxn], mkd[maxn]; + +int main(){ + std::iostream::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); + + cin>>n>>k; + std::fill(mkd, mkd+1+k, -inf); + std::vector> adj(n+1, std::vector(n+1,inf)); + for(ll i{1};i<=n;i++){ + cin>>kd[i]; + } + for(ll i{1};i>u>>v>>w; + adj[u][v]=adj[v][u]=std::min({ + adj[u][v], + adj[v][u], + w + }); + } + for(ll k{1};k<=n;k++){ + for(ll i{1};i<=n;i++){ + for(ll j{1};j<=n;j++){ + adj[i][j]=std::min( + adj[i][j], + adj[i][k]+adj[k][j] + ); + } + } + } + for(ll i{1};i<=n;i++){ + for(ll j{1};j<=n;j++){ + if(i!=j && kd[i]==kd[j]){ + mkd[kd[i]]=std::max(mkd[kd[i]], adj[i][j]); + } + } + } + for(ll i{1};i<=k;i++){ + cout<<(mkd[i]==inf?0:mkd[i])<<'\n'; + } +} \ No newline at end of file