QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#717906 | #9352. Highway Buses | Xinyoucuo1dui# | TL | 2473ms | 257868kb | C++23 | 5.5kb | 2024-11-06 19:14:23 | 2024-11-06 19:14:23 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
long long a,b,c,an[500001],de[500001],cnt,vi[500001],g[500001],vv[500001],st[500001],cn,q,w,h[8000001];
struct p{long long q,w;bool operator < (const p &aa) const{return w>aa.w;};}l[500001];
vector<p> qu[500001],qu1[500001],qu2[500001];
queue<int> quu;
void dfs(int qq,int ww)
{
vv[qq]=1;
for(int i=0;i<qu1[qq].size();i++)
{
if(vv[qu1[qq][i].q]) continue;
vi[qu1[qq][i].w]=1;
dfs(qu1[qq][i].q,qq);
}
}
vector<int> tmp;
void dfs1(int qq)
{
vi[qq]=1;tmp.push_back(qq);
for(int i=0;i<qu1[qq].size();i++)
{
if(vi[qu1[qq][i].q]) continue;
dfs1(qu1[qq][i].q);
}
}
int di[103][210001];
long long si[500001],v[500001],all,mx=1e9,rt,mxd;
void dfs2(int qq,int ww)
{
long long mxx=0;si[qq]=1;
for(int i=0;i<qu2[qq].size();i++)
{
if(qu2[qq][i].q==ww) continue;
if(v[qu2[qq][i].q]) continue;
dfs2(qu2[qq][i].q,qq);
si[qq]+=si[qu2[qq][i].q];
mxx=max(mxx,si[qu2[qq][i].q]);
}
mxx=max(mxx,all-si[qq]);
if(mxx<mx) mx=mxx,rt=qq;
}
vector<int> ve[500001];
void dfs3(int qq,int ww)
{
de[qq]=de[ww]+1;mxd=max(mxd,de[qq]);
ve[de[qq]].push_back(qq);
for(int i=0;i<qu2[qq].size();i++)
{
if(qu2[qq][i].q==ww||v[qu2[qq][i].q]) continue;
dfs3(qu2[qq][i].q,qq);
}
}
int h1[8000001],o;
struct pp{int q,w;}l1[40000001];
long long t[500001],ls[500001];
void add(int qq,int ww)
{
l1[++o].q=ww,l1[o].w=h1[qq],h1[qq]=o;
}
void link(int qq,int ww,long long ee)
{
if(ee<0) return;
++ee;
ee=min(ee,t[ww]);
add(qq,ls[ee]);
}
void work(int qq)
{
mxd=0;
dfs3(qq,0);
int lss=0;t[qq]=mxd;
for(int i=1;i<=mxd;i++)
{
++cnt;
ls[i]=cnt;
if(lss) add(cnt,lss);
for(int j=0;j<ve[i].size();j++) add(cnt,ve[i][j]);
lss=cnt;
}
for(int i=1;i<=mxd;i++)
{
for(int j=0;j<ve[i].size();j++)
{
// cout<<ve[i][j]<<" "<<qq<<" "<<l[ve[i][j]].q-(i-1)<<"\n";
link(ve[i][j],qq,l[ve[i][j]].q-(i-1));
}
}
for(int i=1;i<=mxd;i++) ve[i].clear();
}
void solve(int qq)
{
// cout<<all<<" "<<mx<<"\n";
work(qq);v[qq]=1;
for(int i=0;i<qu2[qq].size();i++)
{
int tt=qu2[qq][i].q;
if(v[tt]) continue;
// cout<<all<<" ";
all=si[tt],mx=1e9,rt=0;
dfs2(tt,qq);
solve(rt);
}
}
void work(vector<int> qq)
{
// cout<<qq.size()<<" "<<cnt<<" "<<o<<"\n";
// for(int i=0;i<qq.size();i++) cout<<qq[i]<<" ";cout<<"\n";
for(int i=0;i<qq.size();i++) vv[qq[i]]=1;
all=0;
for(int i=0;i<qq.size();i++)
{
int tt=qq[i];v[tt]=0;all++;
qu2[tt].clear();
for(int j=0;j<qu1[tt].size();j++)
{
if(vv[qu1[tt][j].q]) qu2[tt].push_back(qu1[tt][j]);
}
}
mx=1e9;rt=0;
dfs2(tmp[0],0);
// cout<<all<<" "<<mx<<"\n";
solve(rt);
for(int i=0;i<qq.size();i++) vv[qq[i]]=0;
}
priority_queue<p> Qu;
void work()
{
while(!Qu.empty()) Qu.pop();
Qu.push(p{1,l[1].w});
// cout<<cnt<<"\n";
for(int i=1;i<=cnt;i++) h[i]=-1;
h[1]=l[1].w;
while(!Qu.empty())
{
int r=Qu.top().q;Qu.pop();
// cout<<r<<" ";
for(int i=h1[r];i;i=l1[i].w)
{
int tt=l1[i].q;
if(h[tt]==-1)
{
if(tt>a) h[tt]=h[r];
else h[tt]=h[r]+l[tt].w;
Qu.push(p{tt,h[tt]});
}
}
}
for(int i=1;i<=a;i++) an[i]=min(an[i],h[i]-l[i].w);
}
long long mxxd;
void dfs4(int qq,int ww)
{
de[qq]=de[ww]+1;ve[de[qq]-1].push_back(qq);
for(int i=0;i<qu1[qq].size();i++)
{
if(qu1[qq][i].q==ww||vi[qu1[qq][i].q]) continue;
dfs4(qu1[qq][i].q,qq);
}
}
inline int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}return x*f;}
int main()
{
// freopen("1.in","r",stdin);
// freopen("1.out","w",stdout);
a=read(),b=read(),c=read();
for(int i=1;i<=a;i++)
{
l[i].q=read(),l[i].w=read(),g[i]=read();
}
for(int i=1;i<=b;i++)
{
q=read(),w=read();
qu[q].push_back(p{w,i});
qu[w].push_back(p{q,i});
}
cnt=a+b;
for(int i=1;i<=cnt;i++) vi[i]=0,vv[i]=0;
cnt=a;
for(int i=1;i<=a;i++) qu1[i]=qu[i];
for(int i=1;i<=a;i++) de[i]=0;
dfs(1,0);cn=0;
for(int i=1;i<=a;i++)
{
for(int j=0;j<qu1[i].size();j++)
{
if(!vi[qu1[i][j].w])
{
st[++cn]=i;
}
}
}
sort(st+1,st+cn+1);cn=unique(st+1,st+cn+1)-st-1;
// for(int i=1;i<=cn;i++) cout<<st[i]<<" ";cout<<"\n";
for(int i=1;i<=a;i++) vi[i]=0,vv[i]=0;
for(int i=1;i<=cn;i++) vi[st[i]]=1;
for(int i=1;i<=cn;i++)
{
for(int j=1;j<=a;j++) di[i][j]=-1;
di[i][st[i]]=0;
while(!quu.empty()) quu.pop();
quu.push(st[i]);
while(!quu.empty())
{
int r=quu.front();quu.pop();
for(int j=0;j<qu1[r].size();j++)
{
if(di[i][qu1[r][j].q]==-1)
{
di[i][qu1[r][j].q]=di[i][r]+1;
quu.push(qu1[r][j].q);
}
}
}
}
// cout<<cnt<<" "<<o;return 0;
for(int i=1;i<=a;i++) an[i]=1e18;
for(int i=1;i<=a;i++)
{
if(!vi[i])
{
tmp.clear();
dfs1(i);
work(tmp);
}
}
for(int i=1;i<=a;i++) vi[i]=0;
for(int i=1;i<=cn;i++) vi[st[i]]=1;
for(int i=1;i<=cn;i++)
{
for(int j=0;j<=a;j++) ve[j].clear();
dfs4(st[i],0);
long long mxx=0;
for(int j=0;j<=a;j++)
{
if(!ve[j].size()) break;
mxx=j;
++cnt;ls[j]=cnt;
if(j>0) add(ls[j],ls[j-1]);
for(int k=0;k<ve[j].size();k++)
{
add(ls[j],ve[j][k]);
}
}
for(int j=1;j<=a;j++)
{
long long nww=l[j].q-di[i][j];
nww=min(nww,mxx);
if(nww>=0)
{
add(j,ls[nww]);
}
}
}
// cout<<cnt<<" "<<o;return 0;
work();
for(int i=1;i<=a;i++)
{
l[i].w+=g[i]*(c-1);
}
work();
for(int i=1;i<=a;i++) printf("%lld\n",an[i]);
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 34708kb
input:
6 6 2 1 50 -40 1 2 100 2 1 100 2 4 100 3 1 100 1 1 100 1 2 2 3 3 4 4 2 2 5 6 1
output:
0 10 52 52 52 10
result:
ok 6 lines
Test #2:
score: 0
Accepted
time: 7ms
memory: 88072kb
input:
500 540 1000000 1 831790353 70 3 624594642 -127 2 189318946 -92 1 858646508 320 4 76999645 671 4 780012318 880 2 51254764 -12 2 420182468 -333 3 314764053 -36 1 560114854 -419 2 484412868 -31 3 466851594 6 4 535326027 732 4 430602789 578 1 605236859 43 4 633715178 896 3 110060408 -9 4 878946915 -654...
output:
0 1277292628 1239671692 1255261807 1284074004 1270230633 1239671692 1284074004 1271369537 1277292628 1205507860 1270615693 1300179417 1205507860 1205507860 1239671692 1251564675 1239671692 1284004371 1239671692 1239671692 1277292628 1270230633 1284004371 1277292628 1255261807 1276194392 1247939403 1...
result:
ok 500 lines
Test #3:
score: 0
Accepted
time: 3ms
memory: 87904kb
input:
500 540 1000000 1 613142394 -268 5 920609625 740 2 755612530 -255 2 23678897 -4 5 325892468 291 5 707223319 -140 1 679600699 -138 5 625157055 690 2 141819870 995 1 250348582 -219 2 581461324 -580 4 339782234 -82 5 810851082 230 3 378119535 158 4 295102386 677 5 854435300 21 3 565535907 -465 2 820995...
output:
0 2421015760 2617367920 2694215005 2812156460 2412108889 2370843291 2786283443 2412108889 2197157944 2412108889 2633707306 2370843291 2478757415 2672183755 2478757415 2633707306 2812156460 1984181483 2464420418 2548091380 2421015760 2421015760 2412108889 2421015760 2421015760 2412108889 2412108889 2...
result:
ok 500 lines
Test #4:
score: 0
Accepted
time: 3ms
memory: 89964kb
input:
500 544 1000000 2 587500219 -573 3 800375803 -606 2 332196789 -11 2 782258272 270 2 690828422 -145 2 642751384 -107 4 78645508 -68 3 692764955 364 5 739361677 -104 4 139030619 -125 5 698401632 -121 3 654935300 401 4 70734757 -57 2 763502749 911 1 71485824 836 1 292976518 -290 1 743618801 659 2 64895...
output:
0 425794735 442014967 675968705 311908134 675968705 336563578 425794735 523701048 479984544 425794735 425794735 425794735 708001283 311908134 1653971237 425794735 580659172 425794735 487630114 311908134 450399440 1653971237 425957613 425794735 425957613 336604992 336604992 425794735 436034689 425794...
result:
ok 500 lines
Test #5:
score: 0
Accepted
time: 3ms
memory: 92168kb
input:
500 543 1000000 4 753661240 -312 2 281450837 -151 9 28464686 987 7 685967710 490 8 592650944 542 10 141100249 83 10 646501804 -94 3 337312645 294 2 904175548 -870 8 281667853 -136 3 36477141 -26 5 476645115 -195 1 21897824 -7 10 517151723 150 1 291410319 941 7 993616997 143 10 628559241 -428 8 10757...
output:
0 445387723 445387723 450719457 455897864 445387723 449974501 449974501 449974501 444157947 449974501 449974501 449974501 449974501 449974501 445387723 441661552 449974501 449974501 449974501 444157947 444157947 444157947 449974501 444157947 444157947 449974501 445387723 441661552 449974501 45156161...
result:
ok 500 lines
Test #6:
score: 0
Accepted
time: 4ms
memory: 91916kb
input:
500 547 1000000 7 579418 0 1 769742 0 1 133755 0 2 996071 0 2 96075 893 7 484503 0 7 645976 141 6 80570 0 2 33751 124 4 218617 701 5 686104 0 1 675119 586 3 294461 0 5 319865 0 9 178301 179 1 547068 0 1 96921 802 3 725739 58 8 646648 0 4 667865 0 6 816462 0 4 901406 37 4 834211 0 1 364051 263 2 1014...
output:
0 653962 626600 579418 626600 603269 603269 626600 626600 634782 626600 672297 579418 626600 626600 579418 626600 579418 626600 672297 626600 661975 672297 746441 626600 661975 626600 626600 626600 626600 579418 626600 653962 661975 626600 626600 579418 579418 626600 579418 579418 626600 634782 6266...
result:
ok 500 lines
Test #7:
score: 0
Accepted
time: 0ms
memory: 94128kb
input:
500 549 1000000 8 275979 799 2 323404 0 8 286448 610 2 877230 292 5 111405 972 2 686865 757 6 542128 0 9 823472 705 8 551203 0 9 900802 0 8 497319 554 2 60284 473 1 128784 147 1 390099 282 1 376548 407 7 444338 502 10 496911 293 7 133528 0 1 949531 669 8 569605 459 1 310534 504 2 705803 0 5 954861 0...
output:
0 308634 296602 275979 275979 275979 308634 296754 296602 275979 296602 308634 275979 275979 275979 296602 275979 296602 275979 296602 308634 296602 275979 300889 275979 275979 275979 275979 296754 296602 324141 275979 296754 296754 308634 296602 308634 308634 275979 296754 275979 275979 324141 2759...
result:
ok 500 lines
Test #8:
score: 0
Accepted
time: 101ms
memory: 101208kb
input:
30000 30047 786577 2 418118 886 1 923620 -1 1 396304 59 1 357673 0 1 12272 51 2 797480 0 2 41479 797 1 970539 -1 1 608143 0 2 415150 0 1 459616 0 1 739232 742 1 917012 -1 1 165211 0 1 637917 550 1 238131 0 2 232835 258 2 610877 0 1 17235 0 2 112947 446 2 828314 0 2 179873 782 2 333590 0 1 961918 194...
output:
0 80494179 83741087 62038907 76473105 104910654 116145079 108446496 88716481 94285072 115284209 99860695 77584533 119165550 81758989 77570762 142596283 79902868 77267149 95599129 114945135 73806480 108069554 77051483 76742645 57016312 152581721 89223155 76282889 122548472 23429774 107080496 76205230...
result:
ok 30000 lines
Test #9:
score: 0
Accepted
time: 137ms
memory: 124976kb
input:
30000 30050 605850 9 564340 974 2 843284 -1 1 398311 922 9 478997 556 7 671058 -1 3 671222 872 2 943222 -1 3 357119 393 8 108556 258 2 579805 0 5 452884 0 7 578644 871 4 863186 157 8 47757 0 10 635134 678 4 73374 1000 4 614076 0 3 549192 0 8 945587 0 5 67239 48 5 943401 992 9 345170 459 6 164234 0 5...
output:
0 9452611 15305660 6254895 8166386 10065348 6017741 6884440 17917177 6017741 7241812 5274395 6017741 6017741 10160098 6017741 8872246 7061933 10080339 8597089 5885039 6017741 6017741 12747501 7589567 13233135 6017741 12499965 6017741 8353713 11425708 6017741 6017741 6017741 7468089 8335888 9588729 6...
result:
ok 30000 lines
Test #10:
score: 0
Accepted
time: 756ms
memory: 179420kb
input:
200000 200047 812175 1 850300 0 1 913813 609 1 148997 755 1 5275 0 1 989899 -1 1 843074 -1 1 131757 0 1 713341 0 1 530046 919 1 243794 0 1 127575 558 1 385431 694 1 94653 0 1 556880 189 1 718137 564 1 968120 -1 1 358633 973 1 2321 0 1 331378 0 1 164889 583 1 70541 710 1 338259 54 1 866090 73 1 31800...
output:
0 17181559 15957501 15779114 115636303 15629732 17014614 15580821 149467817 73641596 15232651 15683692 16610143 17648378 143959447 15957501 340606826 16610143 16319403 138998203 18932628 16190551 272473588 15859079 16686342 17035952 16942975 279664809 246248740 230789370 299273468 16224182 17081451 ...
result:
ok 200000 lines
Test #11:
score: 0
Accepted
time: 1106ms
memory: 216720kb
input:
200000 200050 2 1 528713629 1 1 213369548 -37822878 1 699166189 -474414180 1 77696830 1 1 113587245 1 1 416076134 1 1 439856442 -64939236 1 345132571 0 1 319809000 -58380052 1 118538123 -35192216 1 296406928 -50538228 1 937906349 0 1 812697276 -198448717 1 812963226 1 1 585375084 -485637384 1 891358...
output:
0 429570147481 371676672855 318706830834 478331382972 263557664319 370349057202 354356177314 257103023734 419025668238 253664150673 414860000299 265184541896 454101388044 368491773178 465943230853 341143189070 437236406813 338095814498 564203870191 254129964768 255221699111 419763751724 545110934986...
result:
ok 200000 lines
Test #12:
score: 0
Accepted
time: 1020ms
memory: 197444kb
input:
200000 200049 777072 3 194540 779 4 448274 534 5 256933 0 3 796598 747 2 185663 221 3 303965 348 3 256210 0 5 841527 0 1 707797 263 5 627499 884 5 963924 0 5 85220 0 3 928652 899 1 62085 0 5 512144 0 2 727133 0 2 79884 0 5 400039 0 3 368172 0 4 521014 0 4 302255 57 1 138104 0 4 372879 47 2 562648 0 ...
output:
0 20609231 194564 194663 194564 66834766 12475993 51218045 194564 112611815 194611 163554452 59812602 27049581 194564 194564 194611 194611 194611 211191723 194564 194611 43725196 194564 194611 48429938 194654 194611 37286113 194654 194564 28244990 194611 134326947 14069300 18531514 194540 194654 183...
result:
ok 200000 lines
Test #13:
score: 0
Accepted
time: 1804ms
memory: 222420kb
input:
200000 200048 925035 2 525947 32 11 183013 0 15 614707 0 8 76859 701 14 947804 192 2 467927 133 4 231061 224 9 737711 566 9 640793 0 1 845076 0 16 846825 0 1 21656 0 12 103091 797 12 135329 456 11 57259 0 14 203281 200 3 981455 0 2 972914 365 13 8562 546 8 634206 0 10 518153 0 3 636651 333 15 68339 ...
output:
0 766342 766342 766342 766342 3640272 766342 9816761 766342 4946763 766342 766342 5592035 766342 766342 766342 766342 5583544 6501478 766342 766342 11793421 766342 766342 766342 5143499 766342 766342 6850162 4813389 766342 766342 766342 10716690 1024184 766342 6503363 766342 4634956 13886721 766342 ...
result:
ok 200000 lines
Test #14:
score: 0
Accepted
time: 2473ms
memory: 257868kb
input:
200000 200048 973201 33 847601 281 75 828865 0 79 697163 641 50 373713 140 24 630160 789 48 939829 370 47 588788 155 84 159402 293 47 617786 0 86 307415 347 71 943317 152 58 785204 0 84 152741 927 61 145251 780 56 441083 0 9 934387 351 98 589957 711 7 421074 0 99 334089 0 42 164529 0 97 13306 0 67 4...
output:
0 898102 898063 959085 898063 898063 898183 898063 898063 1030883 898063 1048507 898102 898063 898063 898063 898063 898063 1190439 898063 898063 899518 905305 898063 898063 974615 902855 1033513 935106 1582957 898063 898063 898063 898063 907926 898112 992408 898063 1012275 900484 898063 933881 89806...
result:
ok 200000 lines
Test #15:
score: -100
Time Limit Exceeded
input:
200000 200049 802175 434 897839 609 1637 128515 336 617 353368 0 1309 482860 0 658 923059 -1 266 917631 134 1425 651651 744 210 580125 0 1700 160241 0 60 699775 146 1005 273869 508 1182 814396 0 1159 668637 762 581 329891 0 386 782389 882 411 460313 0 208 466285 781 1408 917465 -1 227 911111 -1 1013...