Get Mystery Box with random crypto!

C++ Good Edges Infosys https://telegram.me/+19mMyesoV7llODI1 | HackWithInfy Exam Solutions

C++
Good Edges
Infosys

https://telegram.me/+19mMyesoV7llODI1

#include
using namespace std;
const int N=500005;
typedef long long ll;
int T,n,k,t,h[N];
ll dp[N][2];
struct edge{
  int ver,net;
  ll val;
}f[N*2];
void add(int x,int y,int z){
  f[++t].net=h[x];
  h[x]=t,f[t].ver=y;
  f[t].val=z;
}
void dfs(int x,int fa){
  dp[x][0]=dp[x][1]=0;
  priority_queue q;
  for(int i=h[x];i;i=f[i].net){
    int y=f[i].ver;
    if(y==fa) continue;
    dfs(y,x);
    dp[x][0]+=dp[y][0];
    q.push(dp[y][1]+f[i].val-dp[y][0]);
  }
  dp[x][1]=dp[x][0];
  int p=k;
  while(p--&&q.size()&&q.top()>0){
    if(p) dp[x][1]+=q.top();
    dp[x][0]+=q.top();
    q.pop();
  }
 
}
int main(){
  scanf("%d",&T);
  while(T--){
    int x,y,z;t=0;
    scanf("%d%d",&n,&k);
    for(int i=1;i      scanf("%d%d%d",&x,&y,&z);
      add(x,y,z),add(y,x,z);
    }
    dfs(1,0);
    printf("%lld\n",dp[1][0]);
    for(int i=1;i<=n;++i) h[i]=0,dp[i][0]=dp[i][1]=0;
  }
  return 0;
}

C++
Good Edges
Infosys

https://telegram.me/+19mMyesoV7llODI1