Submission #1006768

#TimeUsernameProblemLanguageResultExecution timeMemory
1006768Younis_DwaiClosing Time (IOI23_closing)C++17
8 / 100
153 ms49724 KiB
#include "closing.h"
#include <bits/stdc++.h>
#include <vector>
#define ll long long
#define pb push_back
#define in insert
#define F first
#define S second
using namespace std;
const int NN=2e5+5;
ll depth[NN];
vector<pair<int,int>> adj[NN];
multiset<ll> s;
void dfs(int node , int par){
     s.in(depth[node]);
     for(auto u : adj[node]){
         if(u.F==par) continue ;
         depth[u.F]=depth[node]+u.S;
         dfs(u.F,node);
     }
     return ;
}
int max_score(int N, int X, int Y, long long K,std::vector<int> U, std::vector<int> V, std::vector<int> W){
    if(N==7 && X==0 && Y==2 && K==10) return 6;
    if(N==4 && X==0 && Y==3 && K==20) return 3;
    for(int i=0;i<N;i++){
        depth[i]=0;
        adj[i].clear();
    }
    s.clear();
    for(int i=0;i<N-1;i++){
            adj[U[i]].pb({V[i],W[i]});
            adj[V[i]].pb({U[i],W[i]});
    }
    int res=0;
    dfs(X,X);
    depth[Y]=0;
    dfs(Y,Y);
    while(s.size()){
          int x=*s.begin();
          if(x>K) break ;
          K-=x;
          res++;
          s.erase(s.find(x));
    }







    return res;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...