Submission #1191233

#TimeUsernameProblemLanguageResultExecution timeMemory
1191233UnforgettableplThe Ties That Guide Us (CEOI23_incursion)C++20
12 / 100
149 ms7928 KiB
#include "incursion.h" #include <bits/stdc++.h> using namespace std; // #define int long long // SUBTASK 1 vector<int> mark(vector<pair<int,int>> F,int safe){ int N = F.size()+1; vector<int> direction(N); vector<vector<int>> adj(N+1); for(int i=0;i<N-1;i++){ adj[F[i].first].emplace_back(F[i].second); adj[F[i].second].emplace_back(F[i].first); } function<void(int,int,int)> dfs = [&](int x,int p,int dep){ direction[x-1]=dep%3; for(int&i:adj[x])if(i!=p)dfs(i,x,dep+1); }; dfs(safe,-1,0); return direction; } void locate(vector<pair<int,int>> F,int curr,int t){ int N = F.size()+1; vector<int> pos; vector<vector<int>> adj(N+1); for(int i=0;i<N-1;i++){ adj[F[i].first].emplace_back(F[i].second); adj[F[i].second].emplace_back(F[i].first); } { vector<int> dep(N+1); function<int(int,int)> dfs = [&](int x,int p){ dep[x]=1; for(int&i:adj[x])if(i!=p)dep[x]=max(dep[x],dfs(i,x)+1); return dep[x]; }; dfs(curr,-1); for(int i=1;i<=N;i++) sort(adj[i].begin(),adj[i].end(),[&](const int &a,const int &b){return dep[a]>dep[b];}); } function<bool(int,int)> dfs = [&](int x,int p){ int newt = visit(x); if((newt+1)%3!=t){ visit(p); return false; } t = newt; for(int&i:adj[x])if(i!=p)if(dfs(i,x))return true; return true; }; for(int&i:adj[curr])if(dfs(i,curr))break; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...