QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#586684#8806. Summer Drivingchenxinyang2006#6 2ms4364kbC++202.6kb2024-09-24 14:59:442024-09-24 14:59:45

Judging History

你现在查看的是最新测评结果

  • [2024-09-24 14:59:45]
  • 评测
  • 测评结果:6
  • 用时:2ms
  • 内存:4364kb
  • [2024-09-24 14:59:44]
  • 提交

answer

#include <bits/stdc++.h>
#define rep(i,j,k) for(int i=(j);i<=(k);i++)
#define per(i,j,k) for(int i=(j);i>=(k);i--)
#define uint unsigned int
#define ll long long
#define ull unsigned long long
#define db double
#define ldb long double
#define pii pair<int,int>
#define pll pair<ll,ll>
#define mkp make_pair
#define eb emplace_back
#define SZ(S) (int)S.size()
//#define mod 998244353
//#define mod 1000000007
#define inf 0x3f3f3f3f
#define linf 0x3f3f3f3f3f3f3f3f
using namespace std;

template <class T>
void chkmax(T &x,T y){
	if(x < y) x = y;
}

template <class T>
void chkmin(T &x,T y){
	if(x > y) x = y;
}

inline int popcnt(int x){
	return __builtin_popcount(x);
}

inline int ctz(int x){
	return __builtin_ctz(x);
}


/*ll power(ll p,int k = mod - 2){
	ll ans = 1;
	while(k){
		if(k % 2 == 1) ans = ans * p % mod;
		p = p * p % mod;
		k /= 2;	
	}
	return ans;
}*/
int n,rt,A,B;
vector <int> G[3005];

int dp[2][3005],fa[3005],dfn[3005],siz[3005],dep[3005],N;//[0] 切掉向父亲,[1] 在父亲,切掉两条
int dis[305][305],val[3005];
int anc(int u,int v){
	return dfn[u] <= dfn[v] && dfn[v] < dfn[u] + siz[u];
}

void dfs0(int u,int f,int s){
	for(int v:G[u]){
		if(v == f) continue;
		dis[s][v] = dis[s][u] + 1;
		dfs0(v,u,s);
	}
}

void dfs(int u,int f){
	fa[u] = f;
	dep[u] = dep[f] + 1;
	dfn[u] = ++N;
	siz[u] = 1;
	for(int v:G[u]){
		if(v == f) continue;
		dfs(v,u);
		siz[u] += siz[v];
	}
}

void eval(int v){
	val[v] = dp[0][v];
	int p = v;
	rep(k,0,B - 1){
		chkmin(val[v],dp[1][p]);
		p = fa[p];
	}
	rep(w,1,n) if(dis[v][w] <= B && !anc(w,v)) chkmin(val[v],dp[0][w]);	
}

void dfs2(int u){
	for(int v:G[u]) if(v != fa[u]) dfs2(v);

	int valid = 0;
	rep(v,1,n){
		if(anc(u,v) && dep[v] - dep[u] == A){
			valid = 1;
			eval(v);
			chkmax(dp[0][u],val[v]);
		}
	}
	if(!valid){
		dp[0][u] = n + 1;
		rep(v,1,n) if(anc(u,v) && dep[v] - dep[u] <= B) chkmin(dp[0][u],v);
	}

	for(int vv:G[u]){
		if(vv == fa[u]) continue;

		valid = 0;
		rep(v,1,n){
			if(anc(u,v) && !anc(vv,v) && dep[v] - dep[u] == A){
				valid = 1;
				chkmax(dp[1][vv],val[v]);
			}
		}		
		if(!valid){
			dp[1][vv] = n + 1;
			rep(v,1,n) if(anc(u,v) && !anc(vv,v) && dep[v] - dep[u] <= B) chkmin(dp[1][vv],v);
		}
	}		
}

int main(){	
//	freopen("test.in","r",stdin);
	scanf("%d%d%d%d",&n,&rt,&A,&B);
	if(A <= B){
		printf("1\n");
		return 0;
	}
	rep(i,1,n - 1){
		int u,v;
		scanf("%d%d",&u,&v);
		G[u].eb(v);G[v].eb(u);
	}
	rep(u,1,n) dfs0(u,0,u);
	dfs(rt,0);
	dfs2(rt);
	printf("%d\n",dp[0][rt]);
	return 0;
}

詳細信息

Subtask #1:

score: 1
Accepted

Test #1:

score: 1
Accepted
time: 0ms
memory: 3808kb

input:

300000 110732 1 1
54285 169439
18968 45543
130988 134682
162292 70081
212010 121474
128140 292466
209394 38279
91706 225569
67647 188578
265505 84279
161782 137098
27472 221980
284973 79104
230628 268631
69945 205947
153720 168119
230161 32244
138981 44376
165008 136947
125742 123375
209131 122038
8...

output:

1

result:

ok single line: '1'

Test #2:

score: 1
Accepted
time: 0ms
memory: 3820kb

input:

300000 123141 300000 300000
35459 173656
6934 241069
183095 87288
269195 16957
19492 242321
24470 81747
25697 172188
171424 220229
160473 69937
172168 99268
220664 39397
8212 2407
46718 94855
279515 295195
205222 167038
185958 111515
172553 45818
141322 214355
61335 64490
183502 105408
234540 245525...

output:

1

result:

ok single line: '1'

Test #3:

score: 1
Accepted
time: 0ms
memory: 3736kb

input:

298765 30225 2 3
265195 252069
113697 255482
227617 218688
279488 136408
179394 139291
86777 211320
255097 13136
68860 173342
178971 175020
278041 278319
285893 289677
194438 44163
56223 283058
110392 123602
20729 89517
152134 176747
121481 243463
297305 139297
244189 117068
181785 39468
154302 1860...

output:

1

result:

ok single line: '1'

Test #4:

score: 1
Accepted
time: 0ms
memory: 3740kb

input:

299987 224030 2 2
177674 20066
211112 287348
150440 136779
131528 209570
208840 36580
3395 152219
89118 44403
120439 274280
267578 80200
17796 257578
229408 211795
122773 147368
139779 842
94469 299092
211457 29057
9040 117449
216268 88141
40844 98163
183412 221031
230933 237086
147633 135982
282224...

output:

1

result:

ok single line: '1'

Test #5:

score: 1
Accepted
time: 0ms
memory: 3888kb

input:

2 1 1 2
2 1

output:

1

result:

ok single line: '1'

Subtask #2:

score: 0
Runtime Error

Test #6:

score: 0
Runtime Error

input:

300000 226344 300 9
32176 183340
249597 14851
145160 92372
30564 242505
1140 169463
279867 14442
266653 32911
168819 26009
138049 133460
5327 103921
262703 112512
204338 84304
98144 9089
98632 238236
79093 101104
50327 237759
61236 275195
241153 116369
86842 272794
25675 121176
110170 225753
199931 ...

output:


result:


Subtask #3:

score: 5
Accepted

Test #18:

score: 5
Accepted
time: 0ms
memory: 4300kb

input:

300 42 3 2
114 268
132 105
187 17
191 127
14 62
162 126
39 143
72 159
199 184
295 138
71 277
293 103
288 54
231 196
57 220
110 117
38 136
295 258
41 76
291 8
59 131
161 278
244 233
81 76
12 236
21 240
228 262
255 159
236 60
277 33
29 123
170 290
89 154
220 139
193 81
31 53
163 77
148 274
181 76
15 2...

output:

83

result:

ok single line: '83'

Test #19:

score: 5
Accepted
time: 2ms
memory: 4296kb

input:

300 178 3 2
277 106
123 105
235 290
273 34
300 180
43 55
239 74
19 138
110 201
295 18
207 97
238 177
114 24
195 219
154 186
151 294
143 291
47 293
33 99
2 46
101 39
109 240
15 256
43 121
205 261
267 257
81 167
82 23
300 182
13 46
195 221
163 17
109 93
144 23
110 17
153 129
91 243
281 74
135 72
145 1...

output:

4

result:

ok single line: '4'

Test #20:

score: 5
Accepted
time: 2ms
memory: 4280kb

input:

300 130 4 2
74 70
137 178
142 56
106 137
154 190
162 96
218 173
261 37
206 72
136 93
293 159
145 94
221 97
76 189
149 282
79 62
258 37
35 20
215 8
143 207
216 38
262 241
37 68
221 258
156 8
213 50
180 238
132 300
256 136
79 281
179 128
177 202
20 229
43 12
290 230
26 105
135 20
146 84
10 184
254 27
...

output:

126

result:

ok single line: '126'

Test #21:

score: 5
Accepted
time: 2ms
memory: 4232kb

input:

300 49 4 2
199 123
264 232
60 265
215 2
226 189
160 11
200 217
194 175
295 203
20 165
203 63
132 127
42 259
170 293
230 269
20 166
141 96
149 210
246 122
5 185
90 156
297 21
300 78
24 94
139 154
268 258
53 15
267 67
221 248
298 154
136 254
192 234
142 170
56 217
90 25
228 216
216 186
61 90
14 221
27...

output:

26

result:

ok single line: '26'

Test #22:

score: 5
Accepted
time: 2ms
memory: 4364kb

input:

300 250 3 1
91 120
269 191
244 235
202 92
3 146
190 210
175 190
243 20
280 75
81 296
179 85
278 283
123 134
98 35
29 65
219 268
242 135
143 238
274 127
99 243
141 231
285 68
269 76
15 61
179 157
165 139
52 49
247 50
151 50
262 161
132 270
224 15
228 144
56 100
293 35
80 98
188 65
263 43
267 234
243 ...

output:

149

result:

ok single line: '149'

Test #23:

score: 5
Accepted
time: 2ms
memory: 4212kb

input:

300 205 3 1
43 211
182 106
31 159
33 141
50 122
33 108
65 275
218 285
263 71
39 211
41 91
264 151
211 286
298 228
84 96
292 176
78 239
107 28
247 265
132 182
225 257
70 58
165 61
162 35
221 23
168 234
279 130
111 261
157 34
61 47
299 97
129 233
247 245
280 60
137 252
241 248
275 91
251 178
288 181
2...

output:

45

result:

ok single line: '45'

Test #24:

score: 5
Accepted
time: 2ms
memory: 4280kb

input:

300 151 10 4
106 66
88 78
279 12
92 142
298 168
98 117
8 108
104 192
50 216
227 176
77 297
149 195
94 11
72 69
235 267
261 11
131 35
115 146
140 73
132 251
185 145
29 193
52 90
287 39
261 300
24 206
223 59
270 35
225 35
32 95
184 244
52 164
276 118
220 268
249 251
187 217
288 71
297 34
171 198
178 2...

output:

2

result:

ok single line: '2'

Test #25:

score: 5
Accepted
time: 0ms
memory: 4296kb

input:

300 203 300 10
2 182
179 26
120 101
281 271
236 75
260 242
121 271
32 66
277 14
98 47
152 83
231 39
145 93
23 127
203 76
76 252
65 31
33 62
60 201
154 147
42 83
13 203
203 2
265 292
96 30
23 85
23 64
220 30
189 277
296 44
63 110
107 202
61 93
134 286
65 122
133 241
152 142
97 84
209 202
267 47
255 8...

output:

1

result:

ok single line: '1'

Test #26:

score: 5
Accepted
time: 0ms
memory: 3808kb

input:

123 33 3 3
63 85
6 68
37 58
78 86
111 69
36 110
115 56
41 63
112 15
99 61
55 96
123 88
45 16
37 54
95 41
54 24
26 108
40 83
60 36
83 25
71 19
83 7
56 53
123 30
46 93
20 104
99 23
52 84
49 31
110 109
53 97
33 18
90 94
80 3
82 58
108 100
97 14
32 99
8 60
54 119
101 35
23 48
42 8
54 5
10 73
35 18
113 1...

output:

1

result:

ok single line: '1'

Test #27:

score: 5
Accepted
time: 0ms
memory: 4200kb

input:

231 165 100 50
114 20
131 183
182 20
31 36
210 93
13 188
175 5
154 63
48 24
205 90
146 153
129 186
156 106
27 82
49 198
89 42
111 146
203 142
87 20
98 188
65 63
196 118
15 102
137 75
101 67
143 160
130 197
186 209
50 172
47 224
4 220
59 41
148 16
32 182
131 90
87 225
177 77
149 30
93 33
51 106
185 1...

output:

1

result:

ok single line: '1'

Test #28:

score: 5
Accepted
time: 2ms
memory: 4308kb

input:

300 11 30 16
90 227
152 287
67 39
165 50
242 139
278 177
51 148
129 214
94 124
37 201
53 254
84 202
267 183
95 171
251 32
45 170
161 275
272 268
209 49
34 272
106 75
223 285
42 72
130 138
91 263
230 158
31 59
80 209
262 45
136 131
162 121
297 287
32 207
228 171
112 58
273 70
173 176
169 34
155 54
37...

output:

29

result:

ok single line: '29'

Subtask #4:

score: 0
Runtime Error

Dependency #3:

100%
Accepted

Test #29:

score: 0
Runtime Error

input:

3000 63 3 2
2155 250
1688 831
522 631
1755 1764
55 2251
2127 1756
1135 387
600 1437
182 1020
1802 1849
399 2974
1809 574
402 2032
2147 2561
1186 830
829 2804
1086 1237
82 414
892 375
107 2688
1857 1972
1162 324
1758 1763
1255 918
1553 908
849 1670
132 2126
2503 861
1906 1836
305 1063
922 6
2068 1435...

output:


result:


Subtask #5:

score: 0
Runtime Error

Test #49:

score: 0
Runtime Error

input:

100000 20749 3 2
89778 51257
2293 75317
20142 42260
55350 69024
2419 90402
2248 71914
60607 94307
33933 57799
79884 93934
9788 53542
18109 28742
7700 93763
12102 78825
34580 61577
84344 12887
63610 12371
30988 75638
47533 66209
95296 22495
12638 545
36347 57495
41813 49592
60342 1881
38899 62345
524...

output:


result:


Subtask #6:

score: 0
Skipped

Dependency #4:

0%

Subtask #7:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

0%