제출 #1157624

#제출 시각아이디문제언어결과실행 시간메모리
1157624zhasyn기지국 (IOI20_stations)C++20
8 / 100
303 ms584 KiB
#include "stations.h" #include <bits/stdc++.h> #define pb push_back #define pf push_front using namespace std; #define F first #define S second typedef long long ll; #define pii pair <int, int> #define pll pair <ll, ll> typedef long double ld; const ll N = 2000 + 100, M = 4096 + 10, len = 21, inf = 1e18; const ll mod = 1e9 + 7; ll um(ll a, ll b){ return (1LL * a * b) % mod; } ll subr(ll a, ll b){ return ((1LL * a - b) % mod + mod) % mod; } int pos[N]; vector <int> q[N]; void dfs1(int v, int pred, int cnt){ pos[v] = cnt; for(int i = 0; i < (int)q[v].size(); i++){ if(q[v][i] == pred) continue; dfs1(q[v][i], v, cnt + 1); } } void dfs2(int v, int pred, int cur){ if(cur == -1){ pos[v] = 0; cur = 1; for(int i = 0; i < (int)q[v].size(); i++){ dfs2(q[v][i], v, cur); cur += 1000; } return; } pos[v] = cur; for(int i = 0; i < (int)q[v].size(); i++){ if(q[v][i] == pred) continue; dfs2(q[v][i], v, cur + 1); } } vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector <int> labels(n); for(int i = 0; i < (int)u.size(); i++){ q[u[i]].pb(v[i]); q[v[i]].pb(u[i]); } for(int i = 0; i < n; i++){ labels[i] = i; } return labels; } int find_next_station(int s, int t, vector<int> c) { int tt = t, last=-1; while(tt != s){ if(tt == 0) break; last = tt; tt = (tt - 1) / 2; } if(tt == s) return last; return (s - 1) / 2; }
#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...