Submission

Status:
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP

Score: 100

User: Monasm

Problemset: Sirabyrinth 6

Language: cpp

Time: 0.021 second

Submitted On: 2025-02-09 22:50:27

#include <bits/stdc++.h>

#define pii pair<int,int>
#define int long long int
using namespace std;

int32_t main(){
    int n,k,ans=0,m=-1e18;cin>>n>>k;
    vector<pii> adj[n];
    vector<int> dist(n,1e18);
    for(int i=0;i<n-1;i++){
        int u,v,w;cin>>u>>v>>w;
        adj[u].push_back({v,w});
        adj[v].push_back({u,w});
        ans+=w;
    }
    priority_queue<pii,vector<pii>,greater<pii>> pq;
    pq.push({0,k});
    dist[k] = 0;
    while(!pq.empty()){
        int d = pq.top().first,u = pq.top().second;
        pq.pop();
        for(auto i:adj[u]){
            int v = i.first,w = i.second;
            if(dist[v]>w+d){
                dist[v]=w+d;
                pq.push({w+d,v});
            }
        }
    }
    for(int i=0;i<n;i++){
        m = max(m,dist[i]);
    }
    cout<<(ans*2)-m;
}