QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#296540 | #7871. 命运 | OccDreamer | 5 | 8ms | 12604kb | C++14 | 2.1kb | 2024-01-03 09:30:17 | 2024-01-03 09:30:17 |
Judging History
answer
//code by Nobody.Emissary
#include<bits/stdc++.h>
#define ll long long
using namespace std;
namespace IO{
inline int read(){
int X=0, W=0; char ch=getchar();
while(!isdigit(ch)) W|=ch=='-', ch=getchar();
while(isdigit(ch)) X=(X<<1)+(X<<3)+(ch^48), ch=getchar();
return W?-X:X;
}
inline void write(int x){
if(x<0) x=-x, putchar('-');
if(x>9) write(x/10);
putchar(x%10+'0');
}
inline void sprint(int x){write(x), putchar(32);}
inline void eprint(int x){write(x), putchar(10);}
}using namespace IO;
const int inf = 1e9;
const int MAXN = 5e5+5;
int n, m, s, k;
int fa[MAXN], val[MAXN], maxn[MAXN];
ll ans, tmp1[MAXN], tmp2[MAXN], tot1, tot2;
struct edge{
int u, v, w;
inline bool friend operator < (const edge &x, const edge &y){
return x.w<y.w;
}
}E[MAXN];
inline int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
inline bool comp(int x, int y){return min(val[x],maxn[x])<min(val[y],maxn[y]);}
inline void merge(int x, int y, int w){
x=find(x), y=find(y);
if(x==y) return ;
if(val[x]<val[y]) swap(x,y);
maxn[x]=w; fa[x]=y; ans+=w;
return ;
}
int main(){
n=read(), m=read(), k=read(), s=read(); int tot=0;
for(int i=1;i<=n;++i) fa[i]=i, val[i]=inf;
for(int i=1;i<=m;++i){
int x, y, w;
x=read(), y=read(), w=read();
if(x==s) val[y]=min(val[y],w);
else if(y==s) val[x]=min(val[x],w);
else E[++tot]=edge{x,y,w};
}
m=tot; sort(E+1,E+1+m); int cnt=0;
for(int i=1;i<=m;++i) merge(E[i].u,E[i].v,E[i].w);
for(int i=1;i<=n;++i){
if(i==s) continue;
if(find(i)==i){
if(val[i]==inf) continue;
ans+=val[i]; val[i]=inf; ++cnt;
}
}
if(cnt>k) return printf("nonnondayo"), 0; tot=0;
for(int i=1;i<=n;++i){
if(val[i]!=inf){
if(val[i]<maxn[i]) tmp1[++tot1]=i;
else tmp2[++tot2]=i;
}
}
if(tot1+tot2+cnt<k) return printf("nonnondayo"), 0;
sort(tmp1+1,tmp1+1+tot1,comp); sort(tmp2+1,tmp2+1+tot2,comp);
for(int i=1;i<=tot2;++i) tmp1[++tot1]=tmp2[i];
for(int i=1;i<=k-cnt;++i) ans+=val[tmp1[i]]-maxn[tmp1[i]];
printf("%lld",ans);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 5
Accepted
Test #1:
score: 5
Accepted
time: 3ms
memory: 12016kb
input:
49277 49276 1 49277 1 2 2000 2 3 3000 2 4 4000 3 5 5000 3 6 6000 4 7 7000 1 8 8000 7 9 9000 1 10 10000 5 11 11000 4 12 12000 3 13 13000 13 14 14000 1 15 15000 7 16 16000 11 17 17000 2 18 18000 10 19 19000 6 20 20000 4 21 21000 17 22 22000 1 23 23000 14 24 24000 4 25 25000 16 26 26000 15 27 27000 9 2...
output:
1214136002000
result:
ok single line: '1214136002000'
Test #2:
score: 0
Accepted
time: 7ms
memory: 12088kb
input:
49324 49323 1 49324 1 2 2 2 3 3 2 4 4 3 5 5 4 6 6 6 7 7 2 8 8 2 9 9 4 10 10 6 11 11 9 12 12 4 13 13 8 14 14 8 15 15 7 16 16 11 17 17 15 18 18 2 19 19 10 20 20 19 21 21 14 22 22 16 23 23 20 24 24 23 25 25 3 26 26 2 27 27 8 28 28 11 29 29 20 30 30 15 31 31 16 32 32 19 33 33 29 34 34 5 35 35 21 36 36 1...
output:
nonnondayo
result:
ok single line: 'nonnondayo'
Test #3:
score: 0
Accepted
time: 0ms
memory: 8144kb
input:
49423 49422 1 1 1 2 2 2 3 3 1 4 4 3 5 5 2 6 6 1 7 7 1 8 8 7 9 9 3 10 10 3 11 11 5 12 12 3 13 13 9 14 14 10 15 15 13 16 16 5 17 17 9 18 18 12 19 19 17 20 20 4 21 21 5 22 22 12 23 23 21 24 24 21 25 25 11 26 26 17 27 27 21 28 28 18 29 29 17 30 30 2 31 31 21 32 32 28 33 33 17 34 34 31 35 35 11 36 36 8 3...
output:
nonnondayo
result:
ok single line: 'nonnondayo'
Test #4:
score: 0
Accepted
time: 0ms
memory: 12136kb
input:
49501 49500 49501 49501 1 2 2 1 3 3 3 4 4 2 5 5 5 6 6 1 7 7 6 8 8 5 9 9 6 10 10 5 11 11 2 12 12 12 13 13 13 14 14 8 15 15 13 16 16 5 17 17 9 18 18 9 19 19 9 20 20 14 21 21 18 22 22 16 23 23 7 24 24 1 25 25 7 26 26 1 27 27 15 28 28 22 29 29 20 30 30 12 31 31 4 32 32 16 33 33 22 34 34 11 35 35 27 36 3...
output:
nonnondayo
result:
ok single line: 'nonnondayo'
Subtask #2:
score: 0
Wrong Answer
Test #5:
score: 10
Accepted
time: 1ms
memory: 9592kb
input:
21 20 2 21 1 2 18581 1 3 9620 2 4 4362 1 5 7702 5 6 17435 4 7 11679 3 8 14832 1 9 15073 2 10 6595 5 11 19676 11 12 16943 12 13 5268 5 14 20262 8 15 8192 7 16 12340 7 17 1437 7 18 3064 2 19 10437 12 20 2882 19 21 13483
output:
nonnondayo
result:
ok single line: 'nonnondayo'
Test #6:
score: -10
Wrong Answer
time: 2ms
memory: 11780kb
input:
10 20 4 3 1 2 18247 2 3 9041 2 4 4031 2 5 7363 3 6 17172 1 7 11014 6 8 14781 8 9 15347 8 10 6598 5 9 19331 3 10 16523 10 6 5732 2 3 20357 6 9 8827 10 3 12864 6 3 1551 5 6 3932 3 1 10223 9 3 2296 8 5 13620
output:
59872
result:
wrong answer 1st lines differ - expected: '54418', found: '59872'
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 0
Wrong Answer
Dependency #1:
100%
Accepted
Test #14:
score: 0
Wrong Answer
time: 8ms
memory: 12604kb
input:
49997 54855 3516 1 3 2 123052288 4 2 96660489 5 4 21916339 6 4 110026562 7 2 37432698 8 4 38560777 9 5 83209343 10 9 80352789 11 2 88956732 12 7 65449905 13 2 38239108 14 5 90154247 15 4 30810782 16 13 96492679 17 14 112886179 18 9 87190321 19 5 91181643 20 3 107304129 21 15 101439791 22 19 12060197...
output:
2684453485406
result:
wrong answer 1st lines differ - expected: '2688197428747', found: '2684453485406'
Subtask #5:
score: 0
Wrong Answer
Test #17:
score: 0
Wrong Answer
time: 4ms
memory: 12408kb
input:
49996 50165 184 1 3 2 123052595 4 3 96661399 5 2 21916499 6 3 110026337 7 6 37432710 8 2 38560107 9 8 83209370 10 8 80352229 11 2 88957425 12 7 65449321 13 5 38238243 14 5 90153912 15 11 30810953 16 3 96492912 17 13 112885611 18 15 87190336 19 9 91182003 20 2 107304872 21 6 101440738 22 13 120601711...
output:
2902710124301
result:
wrong answer 1st lines differ - expected: '2902613721568', found: '2902710124301'
Subtask #6:
score: 0
Skipped
Dependency #3:
0%
Subtask #7:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%