Submission #1205208

#TimeUsernameProblemLanguageResultExecution timeMemory
1205208dostsThe Ties That Guide Us (CEOI23_incursion)C++20
9 / 100
144 ms5068 KiB
#include <bits/stdc++.h> #include "incursion.h" #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2") //#define int long long #define pii pair<int,int> #define vi vector<int> #define ff first #define ss second #define sp << " " << #define all(x) x.begin(),x.end() using namespace std; const int N = 45000; vector<vi> edges(N); vi dist(N,-1); void dfs(int node,int der = 0) { if (dist[node] != -1) return; dist[node] = der; for (auto it : edges[node]) dfs(it,der+1); } std::vector<int> mark(std::vector<std::pair<int, int>> F, int safe) { int n = 0; for (int i = 0;i<F.size();i++){ F[i].ff--,F[i].ss--; if (edges[F[i].ff].empty()) n++; if (edges[F[i].ss].empty()) n++; edges[F[i].ff].push_back(F[i].ss); edges[F[i].ss].push_back(F[i].ff); } dfs(safe-1); dist.resize(n); edges.resize(n); return dist; } int play(int curr,int t,int par) { for (auto it : edges[curr]) { if (it == par) continue; int x = visit(it+1); if (x > t) { //wrong direction visit(curr+1); continue; } return play(it,x,curr); } return curr+1; } void locate(std::vector<std::pair<int, int>> F, int curr, int t) { for (auto& it : edges) it.clear(); for (int i = 0;i<F.size();i++){ F[i].ff--,F[i].ss--; edges[F[i].ff].push_back(F[i].ss); edges[F[i].ss].push_back(F[i].ff); } curr--; curr = play(curr,t,curr); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...