Submission #1229078

#TimeUsernameProblemLanguageResultExecution timeMemory
1229078trimkus기지국 (IOI20_stations)C++20
10 / 100
312 ms528 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; std::vector<int> label(int n, int k, std::vector<int> U, std::vector<int> V) { vector<vector<int>> adj(n); for (int i = 0; i < (int)U.size(); ++i) { adj[U[i]].push_back(V[i]); adj[V[i]].push_back(U[i]); } vector<int> tin(n), tout(n); auto dfs = [&](auto& dfs, int i, int p, int& t) -> void { tin[i] = t++; for (auto& u : adj[i]) { if (p == u) continue; dfs(dfs, u, i, t); } tout[i] = t; }; int t = 0; dfs(dfs, 0, -1, t); vector<int> rt(n); for (int i = 0; i < n; ++i) { // cout << tin[i] << " " << tout[i] << "\n"; rt[i] = tin[i] * 1000 + tout[i]; } return rt; } bool ancestor(int t1, int t2, int tt1, int tt2) { return t1 <= tt1 && tt2 <= t2; } int find_next_station(int s, int t, std::vector<int> c) { int ent1 = t / 1000; int ent2 = t % 1000; int st1 = s / 1000; int st2 = s % 1000; // cout << "\n"; // cout << "s = " << st1 << " " << st2 << "\n"; // cout << "e = " << ent1 << " " << ent2 << "\n"; sort(begin(c), end(c), [&](int x, int y) { int len = (x % 1000 - x / 1000); int len1 = (y % 1000 - y / 1000); return len < len1; }); for (auto& i : c) { int t1 = i / 1000; int t2 = i % 1000; // cout << t1 << " " << t2 << "\n"; } for (auto& i : c) { int t1 = i / 1000; int t2 = i % 1000; // cout << t1 << " " << t2 << "\n"; if (ancestor(t1, t2, ent1, ent2)) { return i; } } for (auto& i : c) { int t1 = i / 1000; int t2 = i % 1000; // cout << t1 << " " << t2 << "\n"; if (ancestor(t1, t2, st1, st2)) { return i; } } cout << "Not found!!!!\n"; // assert(false); return -1; }
#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...