QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#297973 | #6306. Chase Game | PlentyOfPenalty# | WA | 5ms | 26264kb | C++20 | 1.6kb | 2024-01-05 15:09:53 | 2024-01-05 15:09:53 |
Judging History
answer
#include <bits/stdc++.h>
#include <queue>
using namespace std;
typedef long long ll;
bool umin(ll& a,ll t){if(t<a)return a=t,1;return 0;}
const int MAXN = 400011;
struct edge{int v,w,nxt;}e[MAXN<<1|1];
int cnt=1,last[MAXN];
void adde(int u,int v,int w)
{
e[++cnt].v=v,e[cnt].w=w;
e[cnt].nxt=last[u],last[u]=cnt;
}
std::vector<int>a[MAXN];
int dk[MAXN],dn[MAXN];
void bfs(int* dep,int s,int n)
{
static int Q[MAXN];
int h=0,t=0;
Q[t++]=s,dep[s]=1;
while(h<t)
{
int u=Q[h++];
for(auto v:a[u])
if(!dep[v])dep[v]=dep[u]+1,Q[t++]=v;
}
for(int u=1;u<=n;++u)--dep[u];
}
struct node
{
int u;ll dis;
node(){}
node(int _u,ll _dis){u=_u,dis=_dis;}
bool operator< (const node& you)const{return dis>you.dis;}
};
std::priority_queue<node>Q;
ll dis[MAXN],f[MAXN];
void Dij(int s)
{
memset(dis,0x3f,sizeof dis);
dis[s]=0,Q.push(node(s,0));
while(Q.size())
{
node tp=Q.top();Q.pop();
int u=tp.u;
if(dis[u]!=tp.dis)continue;
for(int i=last[u];i;i=e[i].nxt)
{
int v=e[i].v,w=e[i].w;
if(umin(dis[v],dis[u]+w))Q.push(node(v,dis[v]));
}
}
}
int main()
{
std::cin.tie(0)->sync_with_stdio(0);
int n,m,k,d;
cin>>n>>m>>k>>d;
for(int i=1;i<=m;++i)
{
int u,v;
cin>>u>>v;
a[u].emplace_back(v),a[v].emplace_back(u);
}
bfs(dn,n,n),bfs(dk,k,n);
for(int u=1;u<=n;++u)
for(auto v:a[u])
if(dk[v]<d)adde(u,v,d-dk[v]);
Dij(1);
f[0]=d;
for(int i=1;i<=n;++i)
f[i]=f[i-1]+(d-i%d);
ll ans=dis[n];
for(int u=1;u<=n;++u)
for(auto v:a[u])
umin(ans,dis[u]+f[dn[v]]);
cout<<ans<<endl;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 24064kb
input:
5 5 3 1 1 2 2 4 4 5 1 3 3 5
output:
2
result:
ok 1 number(s): "2"
Test #2:
score: 0
Accepted
time: 0ms
memory: 22060kb
input:
13 17 12 3 1 2 2 3 3 4 4 13 5 13 7 8 7 9 7 10 7 11 7 6 12 7 1 8 8 9 9 10 10 11 11 6 6 13
output:
7
result:
ok 1 number(s): "7"
Test #3:
score: 0
Accepted
time: 3ms
memory: 24112kb
input:
10 9 4 1 4 3 1 2 7 6 6 5 8 9 9 10 5 4 8 7 3 2
output:
9
result:
ok 1 number(s): "9"
Test #4:
score: 0
Accepted
time: 0ms
memory: 26112kb
input:
10 20 9 1 9 5 2 9 4 5 10 5 7 3 1 8 7 1 7 5 3 4 3 1 7 8 3 8 9 3 10 6 9 1 1 6 8 5 6 2 1 10 2 1
output:
1
result:
ok 1 number(s): "1"
Test #5:
score: 0
Accepted
time: 4ms
memory: 22024kb
input:
10 20 3 1 1 4 6 7 5 4 5 3 2 1 8 1 7 8 2 6 2 4 4 8 9 5 1 10 7 4 5 8 4 10 2 5 6 10 4 6 3 7 1 3
output:
1
result:
ok 1 number(s): "1"
Test #6:
score: 0
Accepted
time: 0ms
memory: 26116kb
input:
10 20 4 1 2 7 6 4 2 3 2 4 6 5 8 5 6 7 10 2 3 10 1 8 3 9 3 7 1 7 5 1 6 1 3 4 2 1 5 2 9 2 9 10
output:
2
result:
ok 1 number(s): "2"
Test #7:
score: 0
Accepted
time: 5ms
memory: 24168kb
input:
10 20 1 10 10 9 2 5 7 8 7 10 10 8 8 9 5 6 3 1 6 4 7 9 2 3 3 6 2 1 8 6 5 8 7 4 4 3 2 4 4 1 9 6
output:
24
result:
ok 1 number(s): "24"
Test #8:
score: 0
Accepted
time: 0ms
memory: 24168kb
input:
10 20 6 10 5 4 1 7 6 8 1 2 6 1 5 2 5 1 2 4 5 3 3 2 10 3 9 10 7 9 3 1 5 9 1 8 8 3 8 7 6 4 2 7
output:
15
result:
ok 1 number(s): "15"
Test #9:
score: 0
Accepted
time: 2ms
memory: 26264kb
input:
1000 999 387 1 505 506 314 313 410 411 680 681 884 885 491 492 60 59 343 342 396 397 880 881 954 953 833 834 53 54 284 283 794 793 241 240 347 348 89 88 787 786 551 550 673 672 56 57 683 682 168 169 814 813 726 725 877 876 981 982 799 800 228 227 568 569 387 386 211 212 30 29 298 299 514 515 561 562...
output:
999
result:
ok 1 number(s): "999"
Test #10:
score: 0
Accepted
time: 2ms
memory: 26140kb
input:
1000 2000 879 1 357 547 380 111 973 995 179 906 478 508 463 822 687 488 70 40 330 202 189 303 103 39 510 743 1000 236 311 695 29 338 156 77 299 249 289 275 419 57 352 704 739 825 676 194 783 828 769 169 270 325 354 29 145 197 309 461 456 461 997 816 478 387 117 626 931 803 445 91 730 160 1000 322 25...
output:
3
result:
ok 1 number(s): "3"
Test #11:
score: -100
Wrong Answer
time: 4ms
memory: 22184kb
input:
1000 2000 603 228 10 11 885 884 217 218 626 629 559 562 305 302 328 326 809 807 176 179 553 554 435 432 641 639 761 763 486 484 376 374 261 260 515 512 224 222 413 414 33 34 468 470 976 979 461 459 491 490 272 275 528 526 393 396 673 676 45 42 677 676 247 249 938 937 200 203 649 647 303 304 457 455 ...
output:
37887
result:
wrong answer 1st numbers differ - expected: '49209', found: '37887'