Submission #870635

#TimeUsernameProblemLanguageResultExecution timeMemory
870635ThommyDBClosing Time (IOI23_closing)C++17
0 / 100
73 ms24392 KiB
#include<bits/stdc++.h> using namespace std; vector<vector<pair<int, long long>>> adj; vector<int> W; int N, Y, X; long long DP(int curr, int prv, int K, int time, long long ans, int connectedCities, int connectedXY, bool stop){ long long val = 0; if(stop){ val += (connectedCities*connectedXY)-connectedXY; connectedCities=1; } if(curr==X || curr==Y){ connectedXY++; } if(time+W[curr]>K){ val += connectedCities*connectedXY; connectedCities=1; return val; } if(adj[curr][0].first==prv){ if(adj[curr].size()!=1){ val = DP(adj[curr][1].first, curr, K, time+W[curr], ans, connectedCities+1, connectedXY, false); val = max(DP(adj[curr][1].first, curr, K, time, ans, connectedCities, 0, true), val); } } else{ val= DP(adj[curr][0].first, curr, K, time+W[curr], ans, connectedCities+1, connectedXY, false); val = max(DP(adj[curr][0].first, curr, K, time, ans, connectedCities, 0, true), val); } if(adj[curr].size()==1){ val += (connectedCities*connectedXY)-connectedXY; connectedCities=1; } return val; } int max_score(int n, int x, int y, long long K, vector<int> U, vector<int> V, vector<int> w){ N=n; Y=y; X=x; W=w; adj.assign(N, vector<pair<int, long long>>(0)); for(int i = 0; i < N-1; i++){ adj[U[i]].push_back({V[i], W[i]}); adj[V[i]].push_back({U[i], W[i]}); } int start = -1; for(int i = 0; i < N; i++){ if(adj[i].size()==1){ start=i; break; } } long long ans = DP(start, -1, K, 0, 0, 1, 0, false); 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...