Task: | Toll Roads |
Sender: | eXeP |
Submission time: | 2016-07-29 17:42:37 +0300 |
Language: | C++ |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | WRONG ANSWER | 0 |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.06 s | details |
#2 | ACCEPTED | 0.07 s | details |
#3 | ACCEPTED | 0.06 s | details |
#4 | WRONG ANSWER | 0.06 s | details |
#5 | WRONG ANSWER | 0.05 s | details |
#6 | WRONG ANSWER | 0.06 s | details |
#7 | ACCEPTED | 0.05 s | details |
#8 | ACCEPTED | 0.05 s | details |
#9 | ACCEPTED | 0.06 s | details |
#10 | WRONG ANSWER | 0.05 s | details |
#11 | WRONG ANSWER | 0.05 s | details |
#12 | WRONG ANSWER | 0.05 s | details |
#13 | WRONG ANSWER | 0.05 s | details |
#14 | WRONG ANSWER | 0.06 s | details |
#15 | ACCEPTED | 0.06 s | details |
#16 | ACCEPTED | 0.06 s | details |
#17 | WRONG ANSWER | 0.06 s | details |
#18 | ACCEPTED | 0.05 s | details |
#19 | WRONG ANSWER | 0.06 s | details |
#20 | ACCEPTED | 0.05 s | details |
#21 | WRONG ANSWER | 0.06 s | details |
#22 | WRONG ANSWER | 0.06 s | details |
#23 | WRONG ANSWER | 0.05 s | details |
#24 | WRONG ANSWER | 0.06 s | details |
#25 | WRONG ANSWER | 0.05 s | details |
#26 | WRONG ANSWER | 0.04 s | details |
#27 | ACCEPTED | 0.06 s | details |
#28 | WRONG ANSWER | 0.05 s | details |
#29 | WRONG ANSWER | 0.06 s | details |
#30 | WRONG ANSWER | 1.33 s | details |
#31 | WRONG ANSWER | 0.06 s | details |
#32 | WRONG ANSWER | 0.07 s | details |
#33 | WRONG ANSWER | 0.17 s | details |
#34 | WRONG ANSWER | 1.44 s | details |
#35 | TIME LIMIT EXCEEDED | -- | details |
#36 | TIME LIMIT EXCEEDED | -- | details |
#37 | TIME LIMIT EXCEEDED | -- | details |
#38 | TIME LIMIT EXCEEDED | -- | details |
#39 | TIME LIMIT EXCEEDED | -- | details |
#40 | TIME LIMIT EXCEEDED | -- | details |
#41 | WRONG ANSWER | 0.06 s | details |
#42 | WRONG ANSWER | 0.06 s | details |
#43 | WRONG ANSWER | 0.18 s | details |
#44 | WRONG ANSWER | 0.05 s | details |
#45 | WRONG ANSWER | 0.06 s | details |
#46 | WRONG ANSWER | 0.11 s | details |
#47 | WRONG ANSWER | 0.20 s | details |
#48 | WRONG ANSWER | 1.14 s | details |
#49 | TIME LIMIT EXCEEDED | -- | details |
#50 | TIME LIMIT EXCEEDED | -- | details |
#51 | TIME LIMIT EXCEEDED | -- | details |
#52 | TIME LIMIT EXCEEDED | -- | details |
#53 | TIME LIMIT EXCEEDED | -- | details |
#54 | WRONG ANSWER | 0.06 s | details |
#55 | WRONG ANSWER | 0.06 s | details |
#56 | WRONG ANSWER | 3.02 s | details |
#57 | WRONG ANSWER | 0.06 s | details |
#58 | WRONG ANSWER | 0.10 s | details |
#59 | WRONG ANSWER | 0.87 s | details |
#60 | TIME LIMIT EXCEEDED | -- | details |
#61 | TIME LIMIT EXCEEDED | -- | details |
#62 | TIME LIMIT EXCEEDED | -- | details |
#63 | TIME LIMIT EXCEEDED | -- | details |
#64 | TIME LIMIT EXCEEDED | -- | details |
#65 | TIME LIMIT EXCEEDED | -- | details |
#66 | TIME LIMIT EXCEEDED | -- | details |
#67 | TIME LIMIT EXCEEDED | -- | details |
#68 | ACCEPTED | 9.29 s | details |
#69 | WRONG ANSWER | 0.06 s | details |
#70 | ACCEPTED | 3.40 s | details |
#71 | WRONG ANSWER | 0.06 s | details |
#72 | WRONG ANSWER | 0.05 s | details |
Code
#include <bits/stdc++.h> #define i64 long long #define u64 unsigned long long #define i32 int #define u32 unsigned int #define pii pair<int, int> #define pll pair<long long, long long> #define ld long double #define defmod 1000000007 #define mati64(a,b) vector<vector<i64>>(a, vector<i64>(b, 0)); using namespace std; int n, k; vector<int> v[5050]; int pa[5050]; vector<pair<int, int>> al[5050]; int de[5050]; void hae1(int cur){ for(auto f: v[cur]){ if(f == pa[cur]) continue; pa[f] = cur; hae1(f); al[cur].push_back({de[f]+1, f}); de[cur] = max(de[f]+1, de[cur]); } } vector<bool> d1; multiset<int> cc; int gp(int cur, int last){ if(al[cur][0].second == last){ if(al[cur].size() == 1) return -1; return al[cur][1].first; } return al[cur][0].first; } pair<int, int> gp2(int cur, int last, int last2){ if(al[cur][0].second == last || al[cur][0].second == last2){ if(al[cur].size() == 1) return {0, -1}; if(al[cur][1].second == last || al[cur][1].second == last2){ if(al[cur].size() == 2) return {0, -1}; return al[cur][2]; } return al[cur][1]; } return al[cur][0]; } pair<int, int> gp3(int cur, int last, int last2, int last3){ if(al[cur][0].second == last || al[cur][0].second == last2 || al[cur][0].second == last3){ if(al[cur].size() == 1) return {0, -1}; if(al[cur][1].second == last || al[cur][1].second == last2|| al[cur][0].second == last3){ if(al[cur].size() == 2) return {0, -1}; if(al[cur][2].second == last || al[cur][2].second == last2|| al[cur][2].second == last3){ if(al[cur].size() == 3) return {0, -1}; return al[cur][3]; } return al[cur][2]; } return al[cur][1]; } return al[cur][0]; } void adpis(int cur){ for(auto f: v[cur]){ if(f == pa[cur]) continue; al[f].push_back({gp(cur, f)+1, cur}); sort(al[f].begin(), al[f].end(), greater<pair<int, int>>()); adpis(f); } } int ans = 10000, at = 10000, aa, ab; int alk = 0; void hae2(int cur, int last, int d){ //cout << "cur " << cur << " last " << last << " d " << d << endl; if(d > k) return; if(d != 0){ pii fak = gp2(cur, last, -1); cc.insert(fak.first); pii fakw = gp2(cur, last, fak.second); cc.insert(fakw.first); int be = 10000; if(cc.size() == 1){ //cout << "be " << *cc.rbegin() << endl; be = *cc.rbegin(); } else{ be = *cc.rbegin(); cc.erase(cc.find(be)); int vv = *cc.rbegin(); cc.insert(be); be+=vv;; } if(be < ans){ ans = be; at = d; aa = alk; ab = cur; //cout << "taalla1 " << aa << " " << ab << " " << d<< endl; } else if(be == ans && d < at){ ans = be; at = d; aa = alk; ab = cur; //cout << "taalla " << aa << " " << ab << " " << d<< endl; } //cout << alk << "->"<< cur << " mukana " << endl; //for(auto f: cc) // cout << f << " "; //cout << endl << endl; cc.erase(cc.find(fak.first)); cc.erase(cc.find(fakw.first)); } for(auto f: v[cur]){ if(f == last) continue; pair<int, int> lis = gp2(cur, last, f); cc.insert(lis.first); pair<int, int> lis2 = gp3(cur, last, f, lis.second); cc.insert(lis2.first); hae2(f, cur, d+1); cc.erase(cc.find(lis.first)); cc.erase(cc.find(lis2.first)); } } int main(){ cin.sync_with_stdio(0); cin.tie(0); cin >> n >> k; for(int i = 0; i < n-1; ++i){ int a, b; cin >> a >> b; v[a].push_back(b); v[b].push_back(a); } hae1(0); for(int i = 0; i < n; ++i){ sort(al[i].begin(), al[i].end(), greater<pair<int, int>>()); } adpis(0); for(int i = 0; i < n; ++i){ cc.clear(); int be = 0; //cout << i << ": "; //for(auto f: al[i]) // cout << f.first << "," << f.second << " "; //cout << endl; if(al[i].size() == 1) be = al[i][0].first; else if(al[i].size() > 1) be = al[i][0].first+al[i][1].first; if(be < ans){ ans = be; at = 0; aa = i; ab = i; } alk = i; hae2(i, -1, 0); } if(at == 0) cout << ans << endl << at << endl; else cout << ans << endl << at << endl << aa << " " << ab << endl; return 0; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
8 3 0 2 0 5 2 3 5 1 ... |
correct output |
---|
2 3 2 6 |
user output |
---|
2 3 2 6 |
Test 2
Verdict: ACCEPTED
input |
---|
5 2 0 1 0 2 0 3 0 4 |
correct output |
---|
2 0 |
user output |
---|
2 0 |
Test 3
Verdict: ACCEPTED
input |
---|
2 1 0 1 |
correct output |
---|
0 1 0 1 |
user output |
---|
0 1 0 1 |
Test 4
Verdict: WRONG ANSWER
input |
---|
3 1 0 1 2 1 |
correct output |
---|
1 1 0 1 |
user output |
---|
0 1 1 2 |
Test 5
Verdict: WRONG ANSWER
input |
---|
3 1 0 2 1 2 |
correct output |
---|
1 1 0 2 |
user output |
---|
0 1 1 2 |
Test 6
Verdict: WRONG ANSWER
input |
---|
3 2 0 2 1 2 |
correct output |
---|
0 2 0 1 |
user output |
---|
0 1 1 2 |
Test 7
Verdict: ACCEPTED
input |
---|
4 1 0 3 0 1 3 2 |
correct output |
---|
2 1 0 3 |
user output |
---|
2 1 0 3 |
Test 8
Verdict: ACCEPTED
input |
---|
4 2 0 3 0 1 3 2 |
correct output |
---|
1 2 0 2 |
user output |
---|
1 2 1 3 |
Test 9
Verdict: ACCEPTED
input |
---|
4 3 0 3 0 1 3 2 |
correct output |
---|
0 3 1 2 |
user output |
---|
0 3 1 2 |
Test 10
Verdict: WRONG ANSWER
input |
---|
4 1 0 1 0 2 0 3 |
correct output |
---|
2 0 |
user output |
---|
1 1 0 1 |
Test 11
Verdict: WRONG ANSWER
input |
---|
4 2 0 1 0 2 0 3 |
correct output |
---|
1 2 1 2 |
user output |
---|
1 1 0 1 |
Test 12
Verdict: WRONG ANSWER
input |
---|
4 3 0 1 0 2 0 3 |
correct output |
---|
1 2 1 2 |
user output |
---|
1 1 0 1 |
Test 13
Verdict: WRONG ANSWER
input |
---|
6 3 0 1 0 2 0 3 2 4 ... |
correct output |
---|
2 2 2 3 |
user output |
---|
2 1 0 1 |
Test 14
Verdict: WRONG ANSWER
input |
---|
6 3 0 1 0 2 0 3 2 4 ... |
correct output |
---|
2 1 0 2 |
user output |
---|
2 1 0 1 |
Test 15
Verdict: ACCEPTED
input |
---|
8 5 0 1 1 2 2 3 0 4 ... |
correct output |
---|
2 4 2 5 |
user output |
---|
2 4 2 5 |
Test 16
Verdict: ACCEPTED
input |
---|
2 1 0 1 |
correct output |
---|
0 1 0 1 |
user output |
---|
0 1 0 1 |
Test 17
Verdict: WRONG ANSWER
input |
---|
3 1 2 1 0 2 |
correct output |
---|
1 1 0 2 |
user output |
---|
0 1 1 2 |
Test 18
Verdict: ACCEPTED
input |
---|
3 1 0 2 0 1 |
correct output |
---|
1 1 0 2 |
user output |
---|
1 1 0 1 |
Test 19
Verdict: WRONG ANSWER
input |
---|
3 2 1 0 1 2 |
correct output |
---|
0 2 0 2 |
user output |
---|
0 1 1 2 |
Test 20
Verdict: ACCEPTED
input |
---|
3 2 0 1 0 2 |
correct output |
---|
0 2 1 2 |
user output |
---|
0 2 1 2 |
Test 21
Verdict: WRONG ANSWER
input |
---|
4 1 2 1 2 0 1 3 |
correct output |
---|
2 1 0 2 |
user output |
---|
1 1 1 2 |
Test 22
Verdict: WRONG ANSWER
input |
---|
4 1 2 0 0 3 1 0 |
correct output |
---|
2 0 |
user output |
---|
1 1 0 1 |
Test 23
Verdict: WRONG ANSWER
input |
---|
4 2 3 0 1 2 2 3 |
correct output |
---|
1 2 0 2 |
user output |
---|
0 2 1 3 |
Test 24
Verdict: WRONG ANSWER
input |
---|
4 2 1 0 0 3 0 2 |
correct output |
---|
1 2 1 3 |
user output |
---|
1 1 0 1 |
Test 25
Verdict: WRONG ANSWER
input |
---|
4 3 3 0 3 2 2 1 |
correct output |
---|
0 3 0 1 |
user output |
---|
0 2 1 3 |
Test 26
Verdict: WRONG ANSWER
input |
---|
4 3 1 0 3 0 2 0 |
correct output |
---|
1 2 1 3 |
user output |
---|
1 1 0 1 |
Test 27
Verdict: ACCEPTED
input |
---|
10 3 3 0 8 1 9 5 0 4 ... |
correct output |
---|
2 3 0 5 |
user output |
---|
2 3 0 5 |
Test 28
Verdict: WRONG ANSWER
input |
---|
100 4 32 66 29 26 86 0 71 83 ... |
correct output |
---|
12 4 86 89 |
user output |
---|
8 1 62 49 |
Test 29
Verdict: WRONG ANSWER
input |
---|
1000 1 155 994 213 449 582 440 277 0 ... |
correct output |
---|
22 1 1 330 |
user output |
---|
13 1 49 774 |
Test 30
Verdict: WRONG ANSWER
input |
---|
2500 10 517 660 971 230 982 1721 2200 2124 ... |
correct output |
---|
23 4 294 943 |
user output |
---|
14 1 471 2196 |
Test 31
Verdict: WRONG ANSWER
input |
---|
5000 1 1611 2785 2978 4796 3783 4548 1074 1256 ... |
correct output |
---|
34 1 0 1611 |
user output |
---|
19 1 152 1499 |
Test 32
Verdict: WRONG ANSWER
input |
---|
5000 2 3110 2737 2365 2830 2914 874 3720 2637 ... |
correct output |
---|
30 2 844 1623 |
user output |
---|
18 1 199 860 |
Test 33
Verdict: WRONG ANSWER
input |
---|
5000 4 664 4317 295 764 4857 1869 1111 1915 ... |
correct output |
---|
33 4 541 2936 |
user output |
---|
20 1 1036 2674 |
Test 34
Verdict: WRONG ANSWER
input |
---|
5000 8 4033 4112 3295 1781 1623 933 2035 1665 ... |
correct output |
---|
30 7 2605 4351 |
user output |
---|
20 1 426 924 |
Test 35
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 20 2304 353 834 2090 1767 72 3026 4211 ... |
correct output |
---|
26 12 1708 3762 |
user output |
---|
(empty) |
Test 36
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 100 1688 3447 496 2607 1054 2586 4259 2671 ... |
correct output |
---|
29 5 1379 2879 |
user output |
---|
(empty) |
Test 37
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 1000 638 3198 3452 4568 2723 2277 1947 4539 ... |
correct output |
---|
28 6 517 4411 |
user output |
---|
(empty) |
Test 38
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 2000 1451 4112 1730 1026 1556 1248 4723 678 ... |
correct output |
---|
28 6 82 4161 |
user output |
---|
(empty) |
Test 39
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 4000 3618 1301 2744 1363 1705 3118 2385 2886 ... |
correct output |
---|
28 11 1526 2510 |
user output |
---|
(empty) |
Test 40
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 4999 1647 992 3574 4278 2808 2380 3945 287 ... |
correct output |
---|
25 10 510 839 |
user output |
---|
(empty) |
Test 41
Verdict: WRONG ANSWER
input |
---|
100 4 48 94 54 34 25 31 12 16 ... |
correct output |
---|
18 3 13 24 |
user output |
---|
14 3 96 2 |
Test 42
Verdict: WRONG ANSWER
input |
---|
1000 1 649 341 964 65 43 702 226 543 ... |
correct output |
---|
54 1 23 833 |
user output |
---|
30 1 106 583 |
Test 43
Verdict: WRONG ANSWER
input |
---|
2500 10 2238 1206 1470 365 1938 1220 962 2009 ... |
correct output |
---|
51 10 333 1068 |
user output |
---|
31 1 700 143 |
Test 44
Verdict: WRONG ANSWER
input |
---|
5000 1 1600 4821 4466 2988 261 1010 1777 2935 ... |
correct output |
---|
84 1 36 723 |
user output |
---|
43 1 4564 2457 |
Test 45
Verdict: WRONG ANSWER
input |
---|
5000 2 2161 2849 1729 1347 1763 2560 2098 2899 ... |
correct output |
---|
112 2 1 1769 |
user output |
---|
57 1 1481 2315 |
Test 46
Verdict: WRONG ANSWER
input |
---|
5000 4 3961 4831 2920 3199 4703 3118 201 1241 ... |
correct output |
---|
112 4 43 4157 |
user output |
---|
59 0 |
Test 47
Verdict: WRONG ANSWER
input |
---|
5000 8 3226 1183 3536 3297 2501 261 3071 4107 ... |
correct output |
---|
122 8 133 2017 |
user output |
---|
67 1 787 3800 |
Test 48
Verdict: WRONG ANSWER
input |
---|
5000 20 1221 3603 3259 3147 3676 1561 4574 962 ... |
correct output |
---|
86 20 128 2391 |
user output |
---|
54 1 1395 4490 |
Test 49
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 100 50 2333 699 2904 4502 392 2177 3778 ... |
correct output |
---|
75 42 1627 3129 |
user output |
---|
(empty) |
Test 50
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 1000 1025 4349 3214 4639 4004 2506 652 4796 ... |
correct output |
---|
38 10 2964 4732 |
user output |
---|
(empty) |
Test 51
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 2000 4108 791 4770 1666 4203 4197 2566 728 ... |
correct output |
---|
48 19 2640 4559 |
user output |
---|
(empty) |
Test 52
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 4000 2183 3550 857 549 4752 3563 4198 4895 ... |
correct output |
---|
69 26 3244 4780 |
user output |
---|
(empty) |
Test 53
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 4999 4282 2328 4163 653 929 3214 3631 4207 ... |
correct output |
---|
79 26 2794 4878 |
user output |
---|
(empty) |
Test 54
Verdict: WRONG ANSWER
input |
---|
100 4 51 84 32 89 92 51 67 4 ... |
correct output |
---|
5 3 14 50 |
user output |
---|
5 1 8 73 |
Test 55
Verdict: WRONG ANSWER
input |
---|
1000 1 942 999 402 534 533 278 228 908 ... |
correct output |
---|
10 1 0 968 |
user output |
---|
7 0 |
Test 56
Verdict: WRONG ANSWER
input |
---|
2500 10 1639 991 640 223 1940 1067 801 257 ... |
correct output |
---|
12 2 2075 2395 |
user output |
---|
8 1 41 1055 |
Test 57
Verdict: WRONG ANSWER
input |
---|
5000 1 1585 3293 3686 3851 1447 1604 392 2681 ... |
correct output |
---|
14 0 |
user output |
---|
8 1 179 2284 |
Test 58
Verdict: WRONG ANSWER
input |
---|
5000 2 626 3760 2593 3177 1343 889 1377 596 ... |
correct output |
---|
14 0 |
user output |
---|
8 1 528 3637 |
Test 59
Verdict: WRONG ANSWER
input |
---|
5000 4 1462 182 3060 4479 3021 4111 3145 2887 ... |
correct output |
---|
12 2 2219 3145 |
user output |
---|
8 1 370 4323 |
Test 60
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 8 671 2837 3952 4186 828 1632 3885 2545 ... |
correct output |
---|
10 1 0 2405 |
user output |
---|
(empty) |
Test 61
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 20 3274 1781 3151 566 1298 1210 495 4010 ... |
correct output |
---|
14 0 |
user output |
---|
(empty) |
Test 62
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 100 487 1275 4234 2960 1502 3713 2471 819 ... |
correct output |
---|
10 1 0 4411 |
user output |
---|
(empty) |
Test 63
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 1000 2192 4468 4475 4665 81 4277 998 1960 ... |
correct output |
---|
12 1 0 910 |
user output |
---|
(empty) |
Test 64
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 2000 686 0 3311 3404 176 2362 119 2765 ... |
correct output |
---|
14 1 0 3007 |
user output |
---|
(empty) |
Test 65
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 4000 2848 3939 1514 2396 527 821 2586 4938 ... |
correct output |
---|
16 3 318 3675 |
user output |
---|
(empty) |
Test 66
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 4999 2128 1367 1616 1575 4936 3022 339 4210 ... |
correct output |
---|
10 0 |
user output |
---|
(empty) |
Test 67
Verdict: TIME LIMIT EXCEEDED
input |
---|
5000 4999 2858 558 4677 2444 3042 610 1950 4352 ... |
correct output |
---|
0 4999 0 1971 |
user output |
---|
(empty) |
Test 68
Verdict: ACCEPTED
input |
---|
5000 4999 0 3957 0 2864 0 2018 2678 0 ... |
correct output |
---|
2 0 |
user output |
---|
2 0 |
Test 69
Verdict: WRONG ANSWER
input |
---|
5000 1 2654 1880 2560 3683 4613 596 4860 1233 ... |
correct output |
---|
4998 1 0 1782 |
user output |
---|
4997 1 1 4266 |
Test 70
Verdict: ACCEPTED
input |
---|
5000 1 3762 0 0 2803 0 1387 610 0 ... |
correct output |
---|
2 0 |
user output |
---|
2 0 |
Test 71
Verdict: WRONG ANSWER
input |
---|
10 4 3 0 8 4 5 7 3 8 ... |
correct output |
---|
3 4 3 5 |
user output |
---|
2 4 7 8 |
Test 72
Verdict: WRONG ANSWER
input |
---|
10 5 1 3 5 9 9 2 6 3 ... |
correct output |
---|
2 5 2 6 |
user output |
---|
2 4 6 9 |