Submission #1006729

#TimeUsernameProblemLanguageResultExecution timeMemory
1006729De3b0oClosing Time (IOI23_closing)C++17
0 / 100
56 ms21680 KiB
#include "closing.h" #include<bits/stdc++.h> #include<random> #define ll long long #define F first #define S second #define in insert #define pb push_back #define ppb pop_back() #define d3 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define cans cout << ans << "\n"; #define yes cout << "Yes" << "\n"; #define no cout << "No" << "\n"; #define pll pair<ll,ll> #define lin cout << "\n"; #define sqr 340 #define mod 1000000007 #define mid ((l+r)/2) #define lc (2*n) #define rc (2*n+1) using namespace std; ll n , x , y , k; vector<pll> adj[200009]; ll vis[200009]; int max_score(int N, int X, int Y, long long K,std::vector<int> U, std::vector<int> V, std::vector<int> W) { n=N; x=X; y=Y; k=K; for(int i = 0 ; n-1>i ; i++) { adj[U[i]].pb({V[i],W[i]}); adj[V[i]].pb({U[i],W[i]}); } priority_queue<pll> q; q.push({0,x}); q.push({0,y}); ll ans = 0; while(!q.empty()) { auto nod = q.top(); q.pop(); if(vis[nod.S]) continue; if(-nod.F>k) break; k+=nod.F; ans++; vis[nod.S]=1; for(auto it : adj[nod.S]) { if(vis[it.F]) continue; q.push({nod.F-it.S,it.F}); } } return ans; }
#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...