| Task: | Jimi Hendrix |
| Sender: | Hansuzu |
| Submission time: | 2016-08-04 17:18:39 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 100 |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | details |
| #2 | ACCEPTED | 0.06 s | details |
| #3 | ACCEPTED | 0.06 s | details |
| #4 | ACCEPTED | 0.05 s | details |
| #5 | ACCEPTED | 0.06 s | details |
| #6 | ACCEPTED | 0.06 s | details |
| #7 | ACCEPTED | 0.05 s | details |
| #8 | ACCEPTED | 0.06 s | details |
| #9 | ACCEPTED | 0.07 s | details |
| #10 | ACCEPTED | 0.06 s | details |
| #11 | ACCEPTED | 0.06 s | details |
| #12 | ACCEPTED | 0.06 s | details |
| #13 | ACCEPTED | 0.06 s | details |
| #14 | ACCEPTED | 0.05 s | details |
| #15 | ACCEPTED | 0.06 s | details |
| #16 | ACCEPTED | 0.06 s | details |
| #17 | ACCEPTED | 0.06 s | details |
| #18 | ACCEPTED | 0.06 s | details |
| #19 | ACCEPTED | 0.06 s | details |
| #20 | ACCEPTED | 0.06 s | details |
| #21 | ACCEPTED | 0.06 s | details |
| #22 | ACCEPTED | 0.06 s | details |
| #23 | ACCEPTED | 0.16 s | details |
| #24 | ACCEPTED | 0.14 s | details |
| #25 | ACCEPTED | 0.58 s | details |
| #26 | ACCEPTED | 0.58 s | details |
| #27 | ACCEPTED | 0.59 s | details |
| #28 | ACCEPTED | 0.66 s | details |
| #29 | ACCEPTED | 0.55 s | details |
| #30 | ACCEPTED | 0.58 s | details |
| #31 | ACCEPTED | 0.57 s | details |
| #32 | ACCEPTED | 0.31 s | details |
| #33 | ACCEPTED | 0.31 s | details |
| #34 | ACCEPTED | 0.31 s | details |
| #35 | ACCEPTED | 0.30 s | details |
| #36 | ACCEPTED | 0.32 s | details |
| #37 | ACCEPTED | 0.30 s | details |
| #38 | ACCEPTED | 0.32 s | details |
| #39 | ACCEPTED | 0.44 s | details |
| #40 | ACCEPTED | 0.34 s | details |
| #41 | ACCEPTED | 0.31 s | details |
| #42 | ACCEPTED | 0.43 s | details |
| #43 | ACCEPTED | 0.31 s | details |
| #44 | ACCEPTED | 0.45 s | details |
| #45 | ACCEPTED | 0.32 s | details |
| #46 | ACCEPTED | 0.30 s | details |
| #47 | ACCEPTED | 0.32 s | details |
| #48 | ACCEPTED | 0.44 s | details |
| #49 | ACCEPTED | 0.47 s | details |
| #50 | ACCEPTED | 0.47 s | details |
| #51 | ACCEPTED | 0.49 s | details |
| #52 | ACCEPTED | 0.49 s | details |
| #53 | ACCEPTED | 0.51 s | details |
| #54 | ACCEPTED | 0.46 s | details |
Compiler report
input/code.cpp: In function 'void clearsz(int)':
input/code.cpp:20:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0; i<rt[c].size(); ++i) clearsz(rt[c][i].F);
^
input/code.cpp: In function 'int go(int, int)':
input/code.cpp:29:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0; i<rt[c].size(); ++i){
^
input/code.cpp:41:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0; i<rt[c].size(); ++i){
^
input/code.cpp: In function 'std::pair<std::pair<int, int>, std::pair<int, int> > findg(int)':
input/code.cpp:72:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i=0; i<rt[c].size(); ++i){
^
input/code.cpp: In function 'void find(int)':
input/code.cpp:105:30: war...Code
#include <iostream>
#include <vector>
#define MP make_pair
#define F first
#define S second
using namespace std;
int n, m;
string s;
vector<pair<int, char> > rt[505050];
vector<int> crt[505050];
int sz[505050];
int u[505050];
void clearsz(int c){
if (u[c] || sz[c]==0) return;
sz[c]=0;
for (int i=0; i<rt[c].size(); ++i) clearsz(rt[c][i].F);
}
int d;
int nz;
int go(int c, int p){
sz[c]=1;
int mx=0;
int a=0;
for (int i=0; i<rt[c].size(); ++i){
int w=rt[c][i].F;
if (u[w] || sz[w]) continue;
a=go(w, c);
if (a) return a;
sz[c]+=sz[w];
mx=max(mx, sz[w]);
}
mx=max(mx, nz-sz[c]);
if (mx<=nz/2){
u[c]=++d;
int nzt=nz;
for (int i=0; i<rt[c].size(); ++i){
int w=rt[c][i].F;
if (u[w]) continue;
int nsz=sz[w];
if (w==p) nsz=nz-sz[c];
nz=nsz;
clearsz(w);
crt[c].push_back(go(w, -1));
nz=nzt;
}--d;
sz[c]=nz;
return c;
}
return 0;
}
int cn;
int na=-1;
int nb=-1;
int pr[505050];
int mxl;
pair<pair<int, int>, pair<int, int> > findg(int c){
int mxa=0;
int mxai=c;
int mxb=0;
int mxbi=c;
for (int i=0; i<rt[c].size(); ++i){
if (rt[c][i].F==pr[c] || u[rt[c][i].F]<=mxl) continue;
pr[rt[c][i].F]=c;
pair<pair<int, int>, pair<int, int> > k=findg(rt[c][i].F);
if (k.F.F<m-1 && s[k.F.F]==rt[c][i].S){
++k.F.F;
}
if (k.S.F<m-1 && s[m-k.S.F-1]==rt[c][i].S){
++k.S.F;
}
if (k.F.F>mxa){
mxa=k.F.F;
mxai=k.F.S;
}
if (k.S.F>mxb){
mxb=k.S.F;
mxbi=k.S.S;
}
}
return MP(MP(mxa, mxai), MP(mxb, mxbi));
}
void find(int c){
if (sz[c]<m) return;
if (na!=-1) return;
pr[c]=-1;
mxl=u[c];
int mxa=0;
int mxb=0;
int mxai=c;
int mxbi=c;
for (int i=0; i<rt[c].size(); ++i){
pair<pair<int, int>, pair<int, int> > mx=findg(rt[c][i].F);
if (s[mx.F.F]==rt[c][i].S) ++mx.F.F;
if (s[m-mx.S.F-1]==rt[c][i].S) ++mx.S.F;
if (mxa+mx.S.F>=m){
na=mxai;
nb=mx.S.S;
return;
}
if (mxb+mx.F.F>=m){
na=mx.F.S;
nb=mxbi;
return;
}
if (mx.F.F>mxa){
mxa=mx.F.F;
mxai=mx.F.S;
}
if (mx.S.F>mxb){
mxb=mx.S.F;
mxbi=mx.S.S;
}
}
for (int i=0; i<crt[c].size(); ++i)find(crt[c][i]);
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n >> m;
for (int i=1; i<n; ++i){
int a, b; char c;
cin >> a >> b >> c;
rt[a].push_back(MP(b, c));
rt[b].push_back(MP(a, c));
}
nz=n;
cn=go(1, -1);
cin >> s;
find(cn);
cout << na << " " << nb << "\n";
}Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 9 3 1 2 a 2 3 b 2 4 a 4 5 b ... |
| correct output |
|---|
| 1 9 |
| user output |
|---|
| 1 9 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 2 1 1 2 b b |
| correct output |
|---|
| 2 1 |
| user output |
|---|
| 2 1 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 2 1 1 2 k p |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 10 2 1 4 a 7 5 c 1 9 a 10 1 c ... |
| correct output |
|---|
| 2 1 |
| user output |
|---|
| 3 6 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 10 5 6 1 c 7 6 a 7 8 c 6 5 c ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 10 3 3 10 c 1 9 b 4 8 a 10 4 b ... |
| correct output |
|---|
| 10 1 |
| user output |
|---|
| 10 9 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 10 5 9 1 c 5 4 c 1 7 a 3 9 c ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 10 2 9 10 c 9 8 c 9 3 c 9 4 c ... |
| correct output |
|---|
| 1 10 |
| user output |
|---|
| 1 10 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 10 2 10 3 c 10 4 b 10 8 b 10 1 a ... |
| correct output |
|---|
| 1 9 |
| user output |
|---|
| 1 3 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 10 2 6 7 e 6 9 l 6 2 q 6 10 i ... |
| correct output |
|---|
| 1 9 |
| user output |
|---|
| 1 9 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 10 2 4 1 s 4 6 y 4 9 p 4 2 t ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 1000 11 987 593 b 428 821 a 865 116 b 676 817 a ... |
| correct output |
|---|
| 998 1 |
| user output |
|---|
| 998 819 |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 1000 10 782 148 a 498 256 a 389 269 a 156 291 b ... |
| correct output |
|---|
| 652 1 |
| user output |
|---|
| 469 561 |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 1000 20 657 328 a 185 518 a 778 343 b 56 390 a ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 1000 10 555 641 a 309 489 b 799 943 b 934 662 a ... |
| correct output |
|---|
| 953 332 |
| user output |
|---|
| 645 569 |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 1000 6 161 816 b 25 712 b 540 233 b 980 204 c ... |
| correct output |
|---|
| 990 1 |
| user output |
|---|
| 683 149 |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 1000 635 163 159 o 615 797 x 192 770 n 211 860 j ... |
| correct output |
|---|
| 650 951 |
| user output |
|---|
| 650 134 |
Test 18
Verdict: ACCEPTED
| input |
|---|
| 1000 191 370 983 e 792 207 u 260 334 t 504 718 t ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 19
Verdict: ACCEPTED
| input |
|---|
| 1000 40 471 594 o 345 995 n 973 405 y 215 646 o ... |
| correct output |
|---|
| 1 982 |
| user output |
|---|
| 778 218 |
Test 20
Verdict: ACCEPTED
| input |
|---|
| 1000 100 151 902 a 730 935 b 295 369 b 823 145 a ... |
| correct output |
|---|
| 948 1 |
| user output |
|---|
| 414 676 |
Test 21
Verdict: ACCEPTED
| input |
|---|
| 1000 2 660 306 n 660 778 l 660 924 y 660 902 n ... |
| correct output |
|---|
| 988 969 |
| user output |
|---|
| 988 70 |
Test 22
Verdict: ACCEPTED
| input |
|---|
| 1000 2 526 579 a 526 150 b 526 168 a 526 24 b ... |
| correct output |
|---|
| 1000 1 |
| user output |
|---|
| 579 168 |
Test 23
Verdict: ACCEPTED
| input |
|---|
| 200000 2 140844 190697 r 140844 124115 f 140844 112461 i 140844 19992 d ... |
| correct output |
|---|
| 124115 199952 |
| user output |
|---|
| 124115 73325 |
Test 24
Verdict: ACCEPTED
| input |
|---|
| 200000 2 105421 5980 b 105421 150207 a 105421 115929 a 105421 77625 b ... |
| correct output |
|---|
| 200000 1 |
| user output |
|---|
| 5980 77625 |
Test 25
Verdict: ACCEPTED
| input |
|---|
| 200000 50000 38207 51908 a 123390 86325 b 123134 78235 b 104677 7330 a ... |
| correct output |
|---|
| 112796 1 |
| user output |
|---|
| 112796 57909 |
Test 26
Verdict: ACCEPTED
| input |
|---|
| 200000 150000 116487 13268 b 84833 43815 b 40993 188837 a 197098 131672 a ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 27
Verdict: ACCEPTED
| input |
|---|
| 200000 5000 6663 37269 l 74938 58143 w 79955 85205 e 172041 175241 z ... |
| correct output |
|---|
| 199644 1 |
| user output |
|---|
| 67105 142940 |
Test 28
Verdict: ACCEPTED
| input |
|---|
| 200000 10000 162365 187926 o 25849 45282 n 69475 76654 d 59397 127873 g ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 29
Verdict: ACCEPTED
| input |
|---|
| 200000 4736 135910 152433 b 196857 44930 b 180142 58474 b 123198 131735 a ... |
| correct output |
|---|
| 193336 1 |
| user output |
|---|
| 58629 1192 |
Test 30
Verdict: ACCEPTED
| input |
|---|
| 200000 54739 116541 156209 b 112813 171247 b 134494 179457 b 52303 59188 b ... |
| correct output |
|---|
| 175912 1 |
| user output |
|---|
| 24116 102951 |
Test 31
Verdict: ACCEPTED
| input |
|---|
| 200000 49999 117084 195231 a 38504 191202 n 134618 132918 i 24748 150597 v ... |
| correct output |
|---|
| 198783 1 |
| user output |
|---|
| 35200 11981 |
Test 32
Verdict: ACCEPTED
| input |
|---|
| 200000 20 56534 21846 a 127466 99775 b 197009 10481 a 13071 25861 a ... |
| correct output |
|---|
| 154647 179047 |
| user output |
|---|
| 111576 24194 |
Test 33
Verdict: ACCEPTED
| input |
|---|
| 200000 18 25645 115335 b 138086 169629 b 147195 28130 a 90251 19229 b ... |
| correct output |
|---|
| 1 11192 |
| user output |
|---|
| 53824 62914 |
Test 34
Verdict: ACCEPTED
| input |
|---|
| 200000 15 130040 52065 a 85066 121947 a 142587 138972 c 98852 109707 b ... |
| correct output |
|---|
| 186271 1 |
| user output |
|---|
| 135125 102418 |
Test 35
Verdict: ACCEPTED
| input |
|---|
| 200000 13 186972 158038 n 141304 144334 c 150644 92260 d 75472 56494 e ... |
| correct output |
|---|
| 134673 188304 |
| user output |
|---|
| 90352 188304 |
Test 36
Verdict: ACCEPTED
| input |
|---|
| 200000 22 77116 177355 b 41248 8511 a 196560 61055 b 93074 47152 b ... |
| correct output |
|---|
| 101231 1 |
| user output |
|---|
| 7011 177273 |
Test 37
Verdict: ACCEPTED
| input |
|---|
| 200000 24 12092 977 b 89606 92554 a 98999 130713 b 29359 58778 a ... |
| correct output |
|---|
| 45421 191976 |
| user output |
|---|
| 105435 168998 |
Test 38
Verdict: ACCEPTED
| input |
|---|
| 200000 32 42678 46956 a 85804 92343 a 58647 187834 a 40022 25789 a ... |
| correct output |
|---|
| 170898 83806 |
| user output |
|---|
| 10897 83806 |
Test 39
Verdict: ACCEPTED
| input |
|---|
| 200000 37 97344 4860 b 59032 105557 b 33232 135880 a 41849 198146 b ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 40
Verdict: ACCEPTED
| input |
|---|
| 200000 35 165160 188580 b 169019 179034 a 162600 167716 b 12953 68090 b ... |
| correct output |
|---|
| 34556 152796 |
| user output |
|---|
| 34556 121411 |
Test 41
Verdict: ACCEPTED
| input |
|---|
| 200000 36 25981 130203 b 96700 180125 a 127368 165961 b 64857 173799 b ... |
| correct output |
|---|
| 140998 25928 |
| user output |
|---|
| 125942 25928 |
Test 42
Verdict: ACCEPTED
| input |
|---|
| 200000 37 84272 141200 a 115974 60401 b 164159 9233 b 95061 109295 a ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 43
Verdict: ACCEPTED
| input |
|---|
| 200000 9 64062 160380 r 125886 155571 c 171774 169538 y 98278 87688 l ... |
| correct output |
|---|
| 178549 166726 |
| user output |
|---|
| 178549 34044 |
Test 44
Verdict: ACCEPTED
| input |
|---|
| 200000 10 180259 144845 g 116606 49642 c 17065 195194 h 19110 15737 w ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 45
Verdict: ACCEPTED
| input |
|---|
| 200000 28 69795 159223 b 120740 49968 a 175591 112576 b 13475 97987 b ... |
| correct output |
|---|
| 191304 139389 |
| user output |
|---|
| 182861 60392 |
Test 46
Verdict: ACCEPTED
| input |
|---|
| 200000 29 196920 93284 b 10733 37080 b 60158 81484 a 182923 50537 a ... |
| correct output |
|---|
| 118826 166004 |
| user output |
|---|
| 146699 50672 |
Test 47
Verdict: ACCEPTED
| input |
|---|
| 200000 29 139335 36430 a 19077 167148 a 14826 196018 a 24497 91018 b ... |
| correct output |
|---|
| 176667 184941 |
| user output |
|---|
| 7196 111243 |
Test 48
Verdict: ACCEPTED
| input |
|---|
| 200000 38 198494 65812 a 154023 48530 a 161230 125892 a 163972 48765 b ... |
| correct output |
|---|
| -1 -1 |
| user output |
|---|
| -1 -1 |
Test 49
Verdict: ACCEPTED
| input |
|---|
| 200000 100000 138756 91790 c 50567 42961 d 199463 59094 d 158218 93083 e ... |
| correct output |
|---|
| 120276 158931 |
| user output |
|---|
| 120276 158931 |
Test 50
Verdict: ACCEPTED
| input |
|---|
| 200000 100000 93749 174202 a 182960 2304 n 23460 111271 d 142390 124490 h ... |
| correct output |
|---|
| 197101 82602 |
| user output |
|---|
| 197101 82602 |
Test 51
Verdict: ACCEPTED
| input |
|---|
| 200000 50000 26351 4065 d 190076 154406 b 47708 176166 c 56748 94747 d ... |
| correct output |
|---|
| 102345 166560 |
| user output |
|---|
| 80847 166560 |
Test 52
Verdict: ACCEPTED
| input |
|---|
| 200000 50000 25937 89996 f 147254 157058 r 72097 126197 k 143403 116253 i ... |
| correct output |
|---|
| 175469 125703 |
| user output |
|---|
| 73950 125703 |
Test 53
Verdict: ACCEPTED
| input |
|---|
| 200000 1000 138872 149623 e 161260 117770 a 151105 54329 a 120464 187446 d ... |
| correct output |
|---|
| 188942 1 |
| user output |
|---|
| 15560 57113 |
Test 54
Verdict: ACCEPTED
| input |
|---|
| 200000 1000 53986 146114 r 139076 142403 c 86688 88562 g 40058 165888 g ... |
| correct output |
|---|
| 140202 1 |
| user output |
|---|
| 65384 90992 |
