Submission #128946

# Submission time Handle Problem Language Result Execution time Memory
128946 2019-07-11T11:07:11 Z RockyB Bitaro’s Party (JOI18_bitaro) C++17
100 / 100
1347 ms 168056 KB
// In The Name Of The God
 

#include <bits/stdc++.h>
 
#define f first
#define s second
 
#define pb push_back
#define pp pop_back
 
#define all(x) x.begin(), x.end()
#define sz(x) (int)x.size()
 
#define rep(a, b, c) for (int (a) = (b); (a) <= (c); a++) 
#define per(a, b, c) for (int (a) = (b); (a) >= (c); a--) 
 
#define nl '\n'
#define ioi exit(0);
 
using namespace std;
 
const int MAX_N = (int)1e5 + 7;
const int K = 200;
const int inf = (int)1e9 + 7;
 
int n, m, q;
vector <int> g[MAX_N];
 
int T, k;
int tmr;
int a[MAX_N], was[MAX_N], dp[MAX_N], h[MAX_N];
bool ban[MAX_N];
 
inline int calc(int v) {
  int res = -inf;
  if (was[v] == tmr) return dp[v];
  was[v] = tmr;
  if (!ban[v]) res = 0;
  for (auto to : g[v]) {
    res = max(res, calc(to) + 1);
  }
  return dp[v] = res;
}
void read() {
  cin >> T >> k;
  rep(i, 1, k) {
    cin >> a[i];
  }
}
void naive() {
  rep(i, 1, k) {
    ban[a[i]] = 1;
  }  
  ++tmr;
  int res = calc(T);
  if (res < 0) res = -1;
  cout << res << nl;
  rep(i, 1, k) {
    ban[a[i]] = 0;
  }  
}
int sz[MAX_N], used[MAX_N], pos[MAX_N];
pair <int, int> bfr[MAX_N];
pair <int, int> dist[MAX_N][K];
void pre() {
  rep(i, 1, n) {
    int S = 0;
    bfr[S++] = {0, i};
    for (auto to : g[i]) {
      for (int j = 0; j < sz[to]; j++) {
        auto it = dist[to][j];
        if (used[it.s] == i) {
          bfr[pos[it.s]].f = max(bfr[pos[it.s]].f, it.f + 1);
          continue;
        }
        pos[it.s] = S;
        used[it.s] = i;
        bfr[S++] = {it.f + 1, it.s};
      }
    }
    sort(bfr, bfr + S, greater < pair <int, int> > () );
    rep(j, 0, S - 1) {
      dist[i][sz[i]++] = bfr[j];
      if (sz[i] == K) break;
    }
  }
}
void fast() {
  int res = -1;
  rep(i, 1, k) {
    ban[a[i]] = 1;
  }
  rep(i, 0, sz[T] - 1) {
    if (!ban[dist[T][i].s]) {
      res = max(res, dist[T][i].f);
      break;
    }
  }
  rep(i, 1, k) {
    ban[a[i]] = 0;
  }
  cout << res << nl;
  //cerr << "DA\n";
}
int main() {
  ios_base :: sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  #ifdef IOI
    freopen ("in.txt", "r", stdin);
    freopen ("B.out", "w", stdout);
  #endif
  cin >> n >> m >> q;
  rep(i, 1, m) {
    int s, e;
    cin >> s >> e;
    g[e].pb(s);
  }
  pre();
  rep(i, 1, q) {
    read();
    if (k >= K) naive();
    else fast();
  }
  ioi
}
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2680 KB Output is correct
2 Correct 4 ms 2744 KB Output is correct
3 Correct 4 ms 2680 KB Output is correct
4 Correct 4 ms 2680 KB Output is correct
5 Correct 8 ms 4316 KB Output is correct
6 Correct 9 ms 4344 KB Output is correct
7 Correct 7 ms 4344 KB Output is correct
8 Correct 9 ms 4344 KB Output is correct
9 Correct 8 ms 4408 KB Output is correct
10 Correct 10 ms 4344 KB Output is correct
11 Correct 9 ms 4392 KB Output is correct
12 Correct 9 ms 4324 KB Output is correct
13 Correct 9 ms 4344 KB Output is correct
14 Correct 9 ms 4344 KB Output is correct
15 Correct 9 ms 4348 KB Output is correct
16 Correct 9 ms 4344 KB Output is correct
17 Correct 10 ms 4344 KB Output is correct
18 Correct 9 ms 4288 KB Output is correct
19 Correct 10 ms 4344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2680 KB Output is correct
2 Correct 4 ms 2744 KB Output is correct
3 Correct 4 ms 2680 KB Output is correct
4 Correct 4 ms 2680 KB Output is correct
5 Correct 8 ms 4316 KB Output is correct
6 Correct 9 ms 4344 KB Output is correct
7 Correct 7 ms 4344 KB Output is correct
8 Correct 9 ms 4344 KB Output is correct
9 Correct 8 ms 4408 KB Output is correct
10 Correct 10 ms 4344 KB Output is correct
11 Correct 9 ms 4392 KB Output is correct
12 Correct 9 ms 4324 KB Output is correct
13 Correct 9 ms 4344 KB Output is correct
14 Correct 9 ms 4344 KB Output is correct
15 Correct 9 ms 4348 KB Output is correct
16 Correct 9 ms 4344 KB Output is correct
17 Correct 10 ms 4344 KB Output is correct
18 Correct 9 ms 4288 KB Output is correct
19 Correct 10 ms 4344 KB Output is correct
20 Correct 214 ms 6476 KB Output is correct
21 Correct 214 ms 6492 KB Output is correct
22 Correct 214 ms 6492 KB Output is correct
23 Correct 235 ms 6388 KB Output is correct
24 Correct 1045 ms 165116 KB Output is correct
25 Correct 1076 ms 165212 KB Output is correct
26 Correct 1073 ms 165264 KB Output is correct
27 Correct 571 ms 167072 KB Output is correct
28 Correct 575 ms 167200 KB Output is correct
29 Correct 582 ms 167964 KB Output is correct
30 Correct 583 ms 164792 KB Output is correct
31 Correct 779 ms 165360 KB Output is correct
32 Correct 586 ms 165140 KB Output is correct
33 Correct 619 ms 165192 KB Output is correct
34 Correct 930 ms 165476 KB Output is correct
35 Correct 604 ms 165076 KB Output is correct
36 Correct 658 ms 165508 KB Output is correct
37 Correct 1014 ms 165796 KB Output is correct
38 Correct 665 ms 165688 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2680 KB Output is correct
2 Correct 4 ms 2744 KB Output is correct
3 Correct 4 ms 2680 KB Output is correct
4 Correct 4 ms 2680 KB Output is correct
5 Correct 8 ms 4316 KB Output is correct
6 Correct 9 ms 4344 KB Output is correct
7 Correct 7 ms 4344 KB Output is correct
8 Correct 9 ms 4344 KB Output is correct
9 Correct 8 ms 4408 KB Output is correct
10 Correct 10 ms 4344 KB Output is correct
11 Correct 9 ms 4392 KB Output is correct
12 Correct 9 ms 4324 KB Output is correct
13 Correct 9 ms 4344 KB Output is correct
14 Correct 9 ms 4344 KB Output is correct
15 Correct 9 ms 4348 KB Output is correct
16 Correct 9 ms 4344 KB Output is correct
17 Correct 10 ms 4344 KB Output is correct
18 Correct 9 ms 4288 KB Output is correct
19 Correct 10 ms 4344 KB Output is correct
20 Correct 214 ms 6476 KB Output is correct
21 Correct 214 ms 6492 KB Output is correct
22 Correct 214 ms 6492 KB Output is correct
23 Correct 235 ms 6388 KB Output is correct
24 Correct 1045 ms 165116 KB Output is correct
25 Correct 1076 ms 165212 KB Output is correct
26 Correct 1073 ms 165264 KB Output is correct
27 Correct 571 ms 167072 KB Output is correct
28 Correct 575 ms 167200 KB Output is correct
29 Correct 582 ms 167964 KB Output is correct
30 Correct 583 ms 164792 KB Output is correct
31 Correct 779 ms 165360 KB Output is correct
32 Correct 586 ms 165140 KB Output is correct
33 Correct 619 ms 165192 KB Output is correct
34 Correct 930 ms 165476 KB Output is correct
35 Correct 604 ms 165076 KB Output is correct
36 Correct 658 ms 165508 KB Output is correct
37 Correct 1014 ms 165796 KB Output is correct
38 Correct 665 ms 165688 KB Output is correct
39 Correct 1113 ms 165836 KB Output is correct
40 Correct 1060 ms 165680 KB Output is correct
41 Correct 1075 ms 165708 KB Output is correct
42 Correct 1089 ms 166380 KB Output is correct
43 Correct 1056 ms 165928 KB Output is correct
44 Correct 247 ms 8000 KB Output is correct
45 Correct 225 ms 7380 KB Output is correct
46 Correct 223 ms 7232 KB Output is correct
47 Correct 249 ms 6980 KB Output is correct
48 Correct 218 ms 6908 KB Output is correct
49 Correct 614 ms 165380 KB Output is correct
50 Correct 564 ms 164784 KB Output is correct
51 Correct 245 ms 7772 KB Output is correct
52 Correct 222 ms 7156 KB Output is correct
53 Correct 697 ms 165632 KB Output is correct
54 Correct 1040 ms 165508 KB Output is correct
55 Correct 653 ms 165268 KB Output is correct
56 Correct 1004 ms 164560 KB Output is correct
57 Correct 245 ms 7144 KB Output is correct
58 Correct 246 ms 7100 KB Output is correct
59 Correct 221 ms 6468 KB Output is correct
60 Correct 222 ms 6524 KB Output is correct
61 Correct 833 ms 168056 KB Output is correct
62 Correct 870 ms 165228 KB Output is correct
63 Correct 1088 ms 164568 KB Output is correct
64 Correct 1347 ms 167052 KB Output is correct
65 Correct 1265 ms 164260 KB Output is correct
66 Correct 1304 ms 164636 KB Output is correct
67 Correct 1172 ms 167428 KB Output is correct
68 Correct 1143 ms 164812 KB Output is correct
69 Correct 1259 ms 164856 KB Output is correct
70 Correct 611 ms 166772 KB Output is correct
71 Correct 686 ms 164212 KB Output is correct
72 Correct 1030 ms 164396 KB Output is correct
73 Correct 662 ms 167204 KB Output is correct
74 Correct 733 ms 164464 KB Output is correct
75 Correct 1018 ms 164500 KB Output is correct
76 Correct 610 ms 164084 KB Output is correct
77 Correct 666 ms 167168 KB Output is correct
78 Correct 628 ms 167092 KB Output is correct
79 Correct 247 ms 6392 KB Output is correct
80 Correct 226 ms 6040 KB Output is correct
81 Correct 219 ms 5996 KB Output is correct
82 Correct 646 ms 163960 KB Output is correct
83 Correct 872 ms 163912 KB Output is correct
84 Correct 688 ms 164824 KB Output is correct
85 Correct 911 ms 164036 KB Output is correct
86 Correct 640 ms 164556 KB Output is correct
87 Correct 864 ms 164080 KB Output is correct
88 Correct 247 ms 6324 KB Output is correct
89 Correct 247 ms 6240 KB Output is correct
90 Correct 228 ms 5848 KB Output is correct
91 Correct 228 ms 5716 KB Output is correct
92 Correct 215 ms 5752 KB Output is correct
93 Correct 215 ms 5752 KB Output is correct
94 Correct 665 ms 164136 KB Output is correct
95 Correct 1048 ms 163988 KB Output is correct
96 Correct 692 ms 164328 KB Output is correct
97 Correct 1025 ms 164364 KB Output is correct
98 Correct 677 ms 164304 KB Output is correct
99 Correct 961 ms 164252 KB Output is correct
100 Correct 268 ms 6008 KB Output is correct
101 Correct 267 ms 6008 KB Output is correct
102 Correct 250 ms 5744 KB Output is correct
103 Correct 247 ms 5640 KB Output is correct
104 Correct 237 ms 5748 KB Output is correct
105 Correct 237 ms 5752 KB Output is correct
106 Correct 697 ms 163960 KB Output is correct
107 Correct 1054 ms 163868 KB Output is correct
108 Correct 753 ms 164412 KB Output is correct
109 Correct 997 ms 164216 KB Output is correct
110 Correct 709 ms 164296 KB Output is correct
111 Correct 1022 ms 163960 KB Output is correct
112 Correct 246 ms 5872 KB Output is correct
113 Correct 248 ms 6012 KB Output is correct
114 Correct 227 ms 5496 KB Output is correct
115 Correct 225 ms 5564 KB Output is correct
116 Correct 215 ms 5548 KB Output is correct
117 Correct 228 ms 5512 KB Output is correct
118 Correct 567 ms 162860 KB Output is correct
119 Correct 655 ms 163400 KB Output is correct
120 Correct 1006 ms 163292 KB Output is correct
121 Correct 576 ms 162952 KB Output is correct
122 Correct 663 ms 163352 KB Output is correct
123 Correct 1012 ms 163360 KB Output is correct
124 Correct 564 ms 162928 KB Output is correct
125 Correct 682 ms 163200 KB Output is correct
126 Correct 990 ms 163380 KB Output is correct