Submission #477942

# Submission time Handle Problem Language Result Execution time Memory
477942 2021-10-04T17:28:05 Z amunduzbaev Bitaro’s Party (JOI18_bitaro) C++14
100 / 100
1716 ms 417872 KB
#include "bits/stdc++.h"
using namespace std;

#define ar array
const int N = 2e5 + 5;
const int B = 350;
int n, m, q;
vector<int> edges[N];
vector<ar<int, 2>> par[N];

void build(){
	vector<int> used(n + 1), cost(n + 1);
	for(int i=1;i<=n;i++){
		vector<int> rr;
		cost[i] = 0, rr.push_back(i);
		for(auto x : edges[i]){
			for(auto v : par[x]){
				if(used[v[1]] == i){
					cost[v[1]] = max(cost[v[1]], v[0] + 1);
				} else {
					rr.push_back(v[1]);
					used[v[1]] = i;
					cost[v[1]] = v[0] + 1;
				}
			}
		}
		
		sort(rr.begin(), rr.end(), [&](int a, int b){
			return cost[a] > cost[b];
		});
		
		rr.resize(min((int)rr.size(), B));
		for(auto x : rr) par[i].push_back({cost[x], x});
	}
}

signed main(){
	ios::sync_with_stdio(0); cin.tie(0); 

	cin>>n>>m>>q;
	for(int i=0;i<m;i++){
		int a, b; cin>>a>>b;
		edges[b].push_back(a);
	}
	
	build();
	vector<int> used(n + 1);
	
	while(q--){
		int u; cin>>u;
		int sz, res = -1; cin>>sz;
		vector<int> a(sz);
		for(auto& x : a) cin>>x, used[x] = 1;
		
		if(sz >= B){
			vector<int> dis(n + 1, -1);
			for(int i=1;i<=n;i++){
				if(!used[i]) dis[i] = 0;
				for(auto x : edges[i]){
					if(~dis[x]) dis[i] = max(dis[i], dis[x] + 1);
				}
			} res = dis[u];
		} else {
			for(auto x : par[u]){
				if(used[x[1]]) continue;
				res = x[0];
				break;
			}
		}
		
		cout<<res<<"\n";
		for(auto x : a) used[x] = 0;
	}
}

# Verdict Execution time Memory Grader output
1 Correct 6 ms 9676 KB Output is correct
2 Correct 6 ms 9616 KB Output is correct
3 Correct 5 ms 9700 KB Output is correct
4 Correct 5 ms 9676 KB Output is correct
5 Correct 10 ms 10188 KB Output is correct
6 Correct 8 ms 10188 KB Output is correct
7 Correct 7 ms 10128 KB Output is correct
8 Correct 18 ms 13036 KB Output is correct
9 Correct 19 ms 13004 KB Output is correct
10 Correct 18 ms 13004 KB Output is correct
11 Correct 18 ms 12580 KB Output is correct
12 Correct 11 ms 10956 KB Output is correct
13 Correct 17 ms 12400 KB Output is correct
14 Correct 15 ms 11596 KB Output is correct
15 Correct 11 ms 10572 KB Output is correct
16 Correct 14 ms 11592 KB Output is correct
17 Correct 15 ms 11852 KB Output is correct
18 Correct 15 ms 10812 KB Output is correct
19 Correct 16 ms 11836 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 9676 KB Output is correct
2 Correct 6 ms 9616 KB Output is correct
3 Correct 5 ms 9700 KB Output is correct
4 Correct 5 ms 9676 KB Output is correct
5 Correct 10 ms 10188 KB Output is correct
6 Correct 8 ms 10188 KB Output is correct
7 Correct 7 ms 10128 KB Output is correct
8 Correct 18 ms 13036 KB Output is correct
9 Correct 19 ms 13004 KB Output is correct
10 Correct 18 ms 13004 KB Output is correct
11 Correct 18 ms 12580 KB Output is correct
12 Correct 11 ms 10956 KB Output is correct
13 Correct 17 ms 12400 KB Output is correct
14 Correct 15 ms 11596 KB Output is correct
15 Correct 11 ms 10572 KB Output is correct
16 Correct 14 ms 11592 KB Output is correct
17 Correct 15 ms 11852 KB Output is correct
18 Correct 15 ms 10812 KB Output is correct
19 Correct 16 ms 11836 KB Output is correct
20 Correct 250 ms 14160 KB Output is correct
21 Correct 255 ms 14192 KB Output is correct
22 Correct 244 ms 14168 KB Output is correct
23 Correct 296 ms 14104 KB Output is correct
24 Correct 1349 ms 257364 KB Output is correct
25 Correct 1432 ms 268892 KB Output is correct
26 Correct 1408 ms 267872 KB Output is correct
27 Correct 1489 ms 415560 KB Output is correct
28 Correct 1447 ms 415496 KB Output is correct
29 Correct 1434 ms 415448 KB Output is correct
30 Correct 1576 ms 415212 KB Output is correct
31 Correct 1672 ms 400780 KB Output is correct
32 Correct 1525 ms 415308 KB Output is correct
33 Correct 1231 ms 257568 KB Output is correct
34 Correct 1182 ms 211416 KB Output is correct
35 Correct 1189 ms 255844 KB Output is correct
36 Correct 1468 ms 336332 KB Output is correct
37 Correct 1515 ms 304568 KB Output is correct
38 Correct 1475 ms 337352 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 9676 KB Output is correct
2 Correct 6 ms 9616 KB Output is correct
3 Correct 5 ms 9700 KB Output is correct
4 Correct 5 ms 9676 KB Output is correct
5 Correct 10 ms 10188 KB Output is correct
6 Correct 8 ms 10188 KB Output is correct
7 Correct 7 ms 10128 KB Output is correct
8 Correct 18 ms 13036 KB Output is correct
9 Correct 19 ms 13004 KB Output is correct
10 Correct 18 ms 13004 KB Output is correct
11 Correct 18 ms 12580 KB Output is correct
12 Correct 11 ms 10956 KB Output is correct
13 Correct 17 ms 12400 KB Output is correct
14 Correct 15 ms 11596 KB Output is correct
15 Correct 11 ms 10572 KB Output is correct
16 Correct 14 ms 11592 KB Output is correct
17 Correct 15 ms 11852 KB Output is correct
18 Correct 15 ms 10812 KB Output is correct
19 Correct 16 ms 11836 KB Output is correct
20 Correct 250 ms 14160 KB Output is correct
21 Correct 255 ms 14192 KB Output is correct
22 Correct 244 ms 14168 KB Output is correct
23 Correct 296 ms 14104 KB Output is correct
24 Correct 1349 ms 257364 KB Output is correct
25 Correct 1432 ms 268892 KB Output is correct
26 Correct 1408 ms 267872 KB Output is correct
27 Correct 1489 ms 415560 KB Output is correct
28 Correct 1447 ms 415496 KB Output is correct
29 Correct 1434 ms 415448 KB Output is correct
30 Correct 1576 ms 415212 KB Output is correct
31 Correct 1672 ms 400780 KB Output is correct
32 Correct 1525 ms 415308 KB Output is correct
33 Correct 1231 ms 257568 KB Output is correct
34 Correct 1182 ms 211416 KB Output is correct
35 Correct 1189 ms 255844 KB Output is correct
36 Correct 1468 ms 336332 KB Output is correct
37 Correct 1515 ms 304568 KB Output is correct
38 Correct 1475 ms 337352 KB Output is correct
39 Correct 1389 ms 260388 KB Output is correct
40 Correct 1345 ms 263040 KB Output is correct
41 Correct 1355 ms 265856 KB Output is correct
42 Correct 1544 ms 263596 KB Output is correct
43 Correct 1377 ms 263076 KB Output is correct
44 Correct 273 ms 14496 KB Output is correct
45 Correct 259 ms 14244 KB Output is correct
46 Correct 262 ms 14296 KB Output is correct
47 Correct 326 ms 14128 KB Output is correct
48 Correct 261 ms 14152 KB Output is correct
49 Correct 1488 ms 415780 KB Output is correct
50 Correct 1448 ms 415392 KB Output is correct
51 Correct 283 ms 14532 KB Output is correct
52 Correct 259 ms 14088 KB Output is correct
53 Correct 1516 ms 334828 KB Output is correct
54 Correct 1577 ms 304860 KB Output is correct
55 Correct 1476 ms 335376 KB Output is correct
56 Correct 1543 ms 305788 KB Output is correct
57 Correct 291 ms 14528 KB Output is correct
58 Correct 288 ms 14516 KB Output is correct
59 Correct 260 ms 14200 KB Output is correct
60 Correct 259 ms 14208 KB Output is correct
61 Correct 1608 ms 415440 KB Output is correct
62 Correct 1645 ms 336560 KB Output is correct
63 Correct 1649 ms 303940 KB Output is correct
64 Correct 1531 ms 415328 KB Output is correct
65 Correct 1536 ms 335072 KB Output is correct
66 Correct 1633 ms 305788 KB Output is correct
67 Correct 1468 ms 415268 KB Output is correct
68 Correct 1483 ms 336476 KB Output is correct
69 Correct 1479 ms 301856 KB Output is correct
70 Correct 1473 ms 415396 KB Output is correct
71 Correct 1519 ms 336504 KB Output is correct
72 Correct 1551 ms 305228 KB Output is correct
73 Correct 1521 ms 415472 KB Output is correct
74 Correct 1521 ms 336644 KB Output is correct
75 Correct 1509 ms 305276 KB Output is correct
76 Correct 1496 ms 415648 KB Output is correct
77 Correct 1436 ms 415348 KB Output is correct
78 Correct 1478 ms 415416 KB Output is correct
79 Correct 277 ms 14532 KB Output is correct
80 Correct 257 ms 14148 KB Output is correct
81 Correct 257 ms 14076 KB Output is correct
82 Correct 1592 ms 415060 KB Output is correct
83 Correct 1716 ms 401888 KB Output is correct
84 Correct 1525 ms 417324 KB Output is correct
85 Correct 1652 ms 402632 KB Output is correct
86 Correct 1519 ms 417752 KB Output is correct
87 Correct 1692 ms 404088 KB Output is correct
88 Correct 288 ms 17036 KB Output is correct
89 Correct 279 ms 17004 KB Output is correct
90 Correct 263 ms 16100 KB Output is correct
91 Correct 255 ms 16032 KB Output is correct
92 Correct 260 ms 15720 KB Output is correct
93 Correct 265 ms 15708 KB Output is correct
94 Correct 1246 ms 261204 KB Output is correct
95 Correct 1258 ms 213548 KB Output is correct
96 Correct 1213 ms 258836 KB Output is correct
97 Correct 1231 ms 216680 KB Output is correct
98 Correct 1215 ms 259860 KB Output is correct
99 Correct 1218 ms 216372 KB Output is correct
100 Correct 330 ms 17044 KB Output is correct
101 Correct 343 ms 17028 KB Output is correct
102 Correct 293 ms 16088 KB Output is correct
103 Correct 304 ms 16112 KB Output is correct
104 Correct 306 ms 15808 KB Output is correct
105 Correct 303 ms 15696 KB Output is correct
106 Correct 1533 ms 338692 KB Output is correct
107 Correct 1550 ms 308644 KB Output is correct
108 Correct 1467 ms 339864 KB Output is correct
109 Correct 1479 ms 307056 KB Output is correct
110 Correct 1488 ms 340324 KB Output is correct
111 Correct 1537 ms 308516 KB Output is correct
112 Correct 292 ms 17220 KB Output is correct
113 Correct 286 ms 17036 KB Output is correct
114 Correct 263 ms 16056 KB Output is correct
115 Correct 265 ms 16080 KB Output is correct
116 Correct 267 ms 15636 KB Output is correct
117 Correct 262 ms 15672 KB Output is correct
118 Correct 1451 ms 417872 KB Output is correct
119 Correct 1478 ms 339684 KB Output is correct
120 Correct 1518 ms 307040 KB Output is correct
121 Correct 1473 ms 417700 KB Output is correct
122 Correct 1494 ms 338220 KB Output is correct
123 Correct 1481 ms 307060 KB Output is correct
124 Correct 1464 ms 417744 KB Output is correct
125 Correct 1472 ms 339844 KB Output is correct
126 Correct 1495 ms 306088 KB Output is correct