Submission #1046133

#TimeUsernameProblemLanguageResultExecution timeMemory
1046133batsukh2006Closing Time (IOI23_closing)C++17
8 / 100
121 ms43972 KiB
#include "closing.h" #include<iostream> #include<map> #include<set> #include<cmath> #include<queue> #include<deque> #include<stack> #include<string> #include<math.h> #include<vector> #include<stdio.h> #include<utility> #include<iomanip> #include<string.h> #include<limits.h> #include<algorithm> #include<functional> #include<unordered_map> using namespace std; #define ss second #define ff first #define endl '\n' vector<pair<long long,int> > f,s; vector<vector<pair<int,int> > > g; void dfs1(int a, int p, long long w){ f.push_back({w,a}); for(auto node: g[a]){ if(node.ff!=p){ dfs1(node.ff,a,w+node.ss); } } } void dfs2(int a, int p, long long w){ s.push_back({w,a}); for(auto node: g[a]){ if(node.ff!=p){ dfs2(node.ff,a,w+node.ss); } } } int max_score(int n, int x, int y, long long k, vector<int> u, vector<int> v, vector<int> w){ f.clear(),s.clear(); g.clear(),g.resize(n); for(int i=0; i<w.size(); i++){ g[u[i]].push_back({v[i],w[i]}); g[v[i]].push_back({u[i],w[i]}); } dfs1(x,-1,0); dfs2(y,-1,0); sort(f.begin(),f.end()); sort(s.begin(),s.end()); bool ok=0; int ans=0,cur=0; long long sum=0; vector<long long> vis(n,-1); for(auto i: f){ if(sum+i.ff<=k){ cur++; sum+=i.ff; vis[i.ss]=i.ff; if(i.ss==y) ok=1; int cnt=cur; long long tmp=sum; for(auto j: s){ if(tmp+j.ff<=k){ if(vis[j.ss]==-1){ if(ok) cnt+=2; else cnt++; tmp+=j.ff; }else{ cnt++; if(vis[j.ss]<j.ff) tmp+=j.ff-vis[j.ss]; } } } ans=max(ans,cnt); } } return ans; } // int main(){ // ios::sync_with_stdio(0); // cin.tie(0); // cout.tie(0); // int T=1; // // cin>>T; // while(T--){ // int n,x,y,k; cin>>n>>x>>y>>k; // vector<int> u(n-1),v(n-1),w(n-1); // for(int i=0; i<n-1; i++) cin>>u[i]>>v[i]>>w[i]; // cout<<max_score(n,x,y,k,u,v,w)<<endl; // } // return 0; // }

Compilation message (stderr)

closing.cpp: In function 'int max_score(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)':
closing.cpp:45:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |     for(int i=0; i<w.size(); i++){
      |                  ~^~~~~~~~~
#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...