Submission #847691

#TimeUsernameProblemLanguageResultExecution timeMemory
847691TheMiraiTraveller0711Closing Time (IOI23_closing)C++17
8 / 100
185 ms56224 KiB
#include "closing.h" #include <bits/stdc++.h> // #include <vector> using namespace std; using ll = long long; // Subtask Checker class CheckSub1 { private: vector<vector<pair<int, ll>>> adj; vector<bool> vis; vector<ll> dist; void DFS(int u, ll dd) { vis[u] = 1; dist[u] = dd; for (auto [v, w] : adj[u]) { if (vis[v]) continue; DFS(v, dd + w); } } public: bool isSub1(int N, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W) { adj.resize(N + 3); dist.resize(N + 3); vis.assign(N + 3, 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]}); } DFS(X, 0); return (dist[Y] > 2 * K); } }; /* Subtask 1 : */ class Subtask1 { private: vector<vector<pair<int, ll>>> adj; vector<bool> vis; void DFS(int u, ll dd, vector<ll> &dist) { vis[u] = 1; dist[u] = dd; for (auto [v, w] : adj[u]) { if (vis[v]) continue; DFS(v, dd + w, dist); } } public: int getsol(int N, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W) { adj.resize(N + 3); 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]}); } vector<ll> dist1(N + 3); vis.assign(N + 3, 0); DFS(X, 0, dist1); vector<ll> dist2(N + 3); vis.assign(N + 3, 0); DFS(Y, 0, dist2); vector<ll> adist; for (int i = 0; i < N; i++) { adist.push_back(dist1[i]); adist.push_back(dist2[i]); } sort(adist.begin(), adist.end()); int pt = 0, ans = 0; ll cost = 0; while (pt < adist.size() && cost + adist[pt] <= K) { cost += adist[pt]; pt++, ans++; } return ans; } }; // Subtask2-8 class Subtask2 { }; int max_score(int N, int X, int Y, long long K, std::vector<int> U, std::vector<int> V, std::vector<int> W) { CheckSub1 check; if (check.isSub1(N, X, Y, K, U, V, W)) { Subtask1 sub1; return sub1.getsol(N, X, Y, K, U, V, W); } else { return -1; } }

Compilation message (stderr)

closing.cpp: In member function 'int Subtask1::getsol(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)':
closing.cpp:91:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   91 |         while (pt < adist.size() && cost + adist[pt] <= K)
      |                ~~~^~~~~~~~~~~~~~
#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...