제출 #717314

#제출 시각아이디문제언어결과실행 시간메모리
717314vjudge1Paths (RMI21_paths)C++17
19 / 100
1063 ms22728 KiB

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define int long long
#define endl '\n'
using namespace std;
using namespace __gnu_pbds;
using ordered_set = tree<pair<int,int>,null_type,less<pair<int,int>>,rb_tree_tag,tree_order_statistics_node_update>;
vector<pair<int,int>>vct[100001];
map<pair<int,int>,int>mp;
int ans,n,in=1;
void slv(){
    priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
    pq.push({0,in});
    vector<int>vis(n+1);
    vis[in]=in;
    while(pq.size()){
        int a=pq.top().second,b=pq.top().first;
        pq.pop();
        in=a;
        for(auto &i:vct[a]){
            if(!vis[i.first]){
                vis[i.first]=a;
                pq.push({b+mp[{a,i.first}],i.first});
            }
        }
    }
    int I=in;
    while(vis[I]!=I){
        ans+=mp[{vis[I],I}];
        mp[{vis[I],I}]=0;
        mp[{I,vis[I]}]=0;
        I=vis[I];
    }
}
signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int k;
    cin>>n>>k;
    for(int i=1;i<n;i++){
        int a,b,c;
        cin>>a>>b>>c;
        vct[a].push_back({b,c});
        vct[b].push_back({a,c});
    }
    int K=k;
    for(int w=1;w<=n;w++){
        ans=0;
        in=w;
        for(int j=1;j<=n;j++){
            for(auto &z:vct[j]){
                mp[{j,z.first}]=z.second;
            }
        }
        k=K;
        while(k--)slv();
        cout<<ans<<endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...