Submission #1174835

#TimeUsernameProblemLanguageResultExecution timeMemory
1174835khanhphucscratchStations (IOI20_stations)C++20
0 / 100
2 ms552 KiB
#include "stations.h" #include<bits/stdc++.h> using namespace std; //Subtask 1 vector<int> ad[1005]; int deg[1005], tin[1005], tout[1005], dfsc = 0; bool visited[1005]; int decode(int x, int y) { x--; y--; //x >= y int ans = x*(x+1)/2; return ans + y; } pair<int, int> encode(int x) { int p = 0; while(p*(p+1)/2 <= x) p++; p--; return {p+1, x - p*(p+1)/2+1}; } void dfs(int u) { visited[u] = 1; tin[u] = dfsc; bool befchild = 0; for(int v : ad[u]) if(visited[v] == 0){ dfs(v); if(befchild == 1) dfsc++; befchild = 1; } tout[u] = dfsc; } vector<int> label(int n, int k, vector<int> a, vector<int> b) { for(int i = 0; i < n; i++){ deg[i] = 0; ad[i].clear(); visited[i] = 0; } for(int i = 0; i < n-1; i++){ deg[a[i]]++; deg[b[i]]++; ad[a[i]].push_back(b[i]); ad[b[i]].push_back(a[i]); } dfsc = 1; dfs(0); vector<int> ans(n); for(int i = 0; i < n; i++) ans[i] = decode(tout[i], tin[i]); return ans; } bool ancestor(int x, int y) { pair<int, int> cx = encode(x); int tix = cx.second, tox = cx.first; pair<int, int> cy = encode(y); int tiy = cy.second, toy = cy.first; return tix <= tiy && toy <= tox; } int find_next_station(int s, int t, vector<int> c) { if(ancestor(s, t) == 0){ for(int i : c) if(ancestor(i, s) == 1) return i; } for(int i : c) if(ancestor(i, s) == 0 && ancestor(i, t) == 1) return i; return -1; } /*int main() { int type; cin>>type; if(type == 1){ vector<int> a, b; int n; cin>>n; for(int i = 0; i < n-1; i++){ int u, v; cin>>u>>v; a.push_back(u); b.push_back(v); } vector<int> ans = label(n, 0, a, b); for(int i : ans) cout<<i<<" "; } else{ int s, t, n; cin>>s>>t>>n; vector<int> adj(n); for(int i = 0; i < n; i++) cin>>adj[i]; cout<<find_next_station(s, t, adj); } }*/
#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...