# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1080131 | 2024-08-29T07:20:08 Z | Jawad_Akbar_JJ | 기지국 (IOI20_stations) | C++17 | 600 ms | 940 KB |
#include <iostream> #include <vector> using namespace std; const int N1 = 1005; vector<int> nei[N1]; int d[N1]; bool seen[N1]; vector<int> label(int n, int k, vector<int> u, vector<int> v){ bool t = 1; for (int i=0;i<n-1;i++){ nei[u[i]].push_back(v[i]); nei[v[i]].push_back(u[i]); d[u[i]]++; d[v[i]]++; t &= min(u[i], v[i]) == i / 2; t &= max(u[i], v[i]) == i+1; } vector<int> lab(n, 0); if (t){ for (int i=0;i<n;i++) lab[i] = i+1; return lab; } if (k == 1e9){ for (int i=0;i<n-1;i++){ lab[u[i]] += (1<<v[i]); lab[v[i]] += (1<<u[i]); } lab[0] += 1e8; return lab; } int mx = 0, mn = 0; for (int i=0;i<n;i++){ if (d[i] > d[mx]) mx = i; if (d[i] < d[mn]) mn = i; } if (d[mx] <= 2){ int cur, lb = 0; for (int i=0;i<n;i++) if (d[i] == 1) cur = i; while (cur != -1){ int ncur = -1; lab[cur] = lb++; seen[cur] = 1; for (int i : nei[cur]) if (!seen[i]) ncur = i; cur = ncur; } return lab; } return lab; } int ver; bool dfs(int u, int s, int t, int p = -1){ if (u == t) return 1; seen[u] = 1; for (int i : nei[u]){ if (seen[i]) continue; bool b = dfs(i, s, t, u); if (b and u == s) ver = i; if (b) return 1; } return 0; } int find_next_station(int s, int t, vector<int> lab){ int n = lab.size(); for (int i=0;i<n;i++) nei[i].clear(), seen[i] = 0; // if (lab[0] > 1e8){ // for (int i=0;i<n;i++) // if (lab[i] == s){ // s = i; // break; // } // for (int i=0;i<n;i++) // if (lab[i] == t){ // t = i; // break; // } // lab[0] -= 1e8; // for (int i=0;i<n;i++){ // for (int j=0;j<n;j++) // if ((1<<j) & lab[i]) // nei[i].push_back(j); // } // lab[0] += 1e8; // ver = -1; // bool b = dfs(s, s, t); // if (ver == -1) // return lab[0]; // return lab[ver]; // } bool tt = true, t2 = true; for (int i=0;i<n;i++){ tt &= lab[i] == i+1; if (lab[i] > n) t2 = false; } if (tt and lab[0] == 1){ if (s < t){ for (int i=1;i<=30;i++) if ((t>>i) == s) return (t >> (i-1)); return s / 2; } else{ return s / 2; } } // if (t2){ // if (s > t) // return s - 1; // return s + 1; // } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 600 KB | Invalid labels (duplicates values). scenario=1, label=0 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 303 ms | 940 KB | Output is correct |
2 | Correct | 379 ms | 684 KB | Output is correct |
3 | Correct | 600 ms | 684 KB | Output is correct |
4 | Correct | 426 ms | 684 KB | Output is correct |
5 | Correct | 417 ms | 684 KB | Output is correct |
6 | Correct | 286 ms | 680 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 600 KB | Invalid labels (duplicates values). scenario=1, label=0 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 588 ms | 684 KB | Output is correct |
2 | Incorrect | 1 ms | 344 KB | Invalid labels (duplicates values). scenario=2, label=1 |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 596 KB | Invalid labels (values out of range). scenario=1, k=1000000000, vertex=1, label=-2147483644 |
2 | Halted | 0 ms | 0 KB | - |