QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#717757 | #9352. Highway Buses | Xinyoucuo1dui# | WA | 1002ms | 197712kb | C++23 | 5.6kb | 2024-11-06 18:53:37 | 2024-11-06 18:53:37 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
long long a,b,c,an[300001],de[300001],cnt,vi[300001],g[300001],vv[300001],st[300001],cn,q,w,h[5000001];
struct p{long long q,w;bool operator < (const p &aa) const{return w>aa.w;};}l[300001];
vector<p> qu[300001],qu1[300001],qu2[300001];
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][200001];
long long si[200001],v[200001],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[300001];
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[5000001],o;
struct pp{int q,w;}l1[40000001];
long long t[300001],ls[300001];
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);//mxdd=max(mxdd,de[qq]-1);
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);
for(int j=1;j<=cn;j++)
{
if(i==j) continue;
ve[di[i][st[j]]].push_back(st[j]);
}
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;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 32452kb
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: 3ms
memory: 85808kb
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: 0ms
memory: 85880kb
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: 0ms
memory: 89904kb
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: 7ms
memory: 89900kb
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: 0ms
memory: 85836kb
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: 98376kb
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: 90ms
memory: 102980kb
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: 122ms
memory: 123572kb
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: 732ms
memory: 169952kb
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: -100
Wrong Answer
time: 1002ms
memory: 197712kb
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 496709418589 427633799264 370389174591 552771453891 302631069544 429731928361 410165857499 296672450375 483289459146 292429319377 479010990406 305458821147 517539249122 425236744955 531834606388 393525775676 503979227454 389324538270 656732198816 292717529583 293809263925 485100542834 630440389554...
result:
wrong answer 2nd lines differ - expected: '429570147481', found: '496709418589'