QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#421342 | #7871. 命运 | kkkgjyismine4 | 5 | 68ms | 76976kb | C++14 | 2.3kb | 2024-05-25 16:48:53 | 2024-05-25 16:48:54 |
Judging History
answer
#include<bits/stdc++.h>
#define pii pair<int,int>
#define fi first
#define se second
#define ll long long
#define pb push_back
#define mp make_pair
using namespace std;
bool vis[50004];
struct Node{int u,v,w;}e[500004],e1[500004];
bool operator<(Node a,Node b){return a.w>b.w;}
int n,m,s,k,ct,tt;ll Ans;
vector<pii>vec[2000005];
struct DSU{
int fa[50004],sz[50004],Ct;
pii stk[500004];int col[500004],tail;
void init(){for(int i=1;i<=n;++i)fa[i]=i,sz[i]=1;Ct=n;}
int find(int r){
if(r==fa[r])return r;
return find(fa[r]);
}
void merge(int u,int v,int t){
u=find(u),v=find(v);if(u==v)return;
--Ct;if(sz[u]<sz[v])swap(u,v);sz[u]+=sz[v];
stk[++tail]=mp(u,v),col[tail]=t;fa[v]=u;
}
void back(int p){
while(tail&&col[tail]==p){
int u=stk[tail].fi,v=stk[tail].se;--tail;
sz[u]-=sz[v],fa[v]=v,++Ct;
}
}
}t,t1;
#define ls (p<<1)
#define rs (p<<1|1)
#define mid (l+r>>1)
void ins(int p,int l,int r,int a,pii v){
if(a>r)return;
if(a<=l){vec[p].pb(v);return;}
if(a<=mid)ins(ls,l,mid,a,v);
ins(rs,mid+1,r,a,v);
}
void Ins(int p,int l,int r,int b,pii v){
if(b<l)return;
if(r<=b){vec[p].pb(v);return;}
if(b>mid)Ins(rs,mid+1,r,b,v);
Ins(ls,l,mid,b,v);
}
bool chk(){
if(ct<k||t.Ct>1||t1.Ct>k+1)return 0;
return 1;
}
void solve(int p,int l,int r){
for(auto v:vec[p]){
t.merge(v.fi,v.se,p);
if(v.fi!=s&&v.se!=s)t1.merge(v.fi,v.se,p);
}
if(l==r){
if(e[l].u==s||e[l].v==s)--ct;
if(!chk()){
Ans+=1ll*e[l].w;
ins(1,1,m,l+1,mp(e[l].u,e[l].v));
if(e[l].u==s||e[l].v==s)--k;
}
t.back(p),t1.back(p);
return;
}
solve(ls,l,mid),solve(rs,mid+1,r);
t.back(p),t1.back(p);
}
int main(){
scanf("%d%d%d%d",&n,&m,&k,&s);
for(int i=1;i<=m;++i)scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
sort(e+1,e+m+1),reverse(e+1,e+m+1);
for(int i=1;i<=m;++i){
if(e[i].v==s)swap(e[i].u,e[i].v);
if(e[i].u!=s){e1[++tt]=e[i];continue;}
if(!vis[e[i].v]){++ct;e1[++tt]=e[i],vis[e[i].v]=1;continue;}
}
m=tt;for(int i=1;i<=m;++i)e[i]=e1[i];
t.init(),t1.init(),reverse(e+1,e+m+1);
for(int i=1;i<=m;++i){
t.merge(e[i].u,e[i].v,0);
if(e[i].u!=s&&e[i].v!=s)t1.merge(e[i].u,e[i].v,0);
}
if(!chk()){puts("nonnondayo");return 0;}
t.back(0),t1.back(0);
for(int i=1;i<=m;++i)Ins(1,1,m,i-1,mp(e[i].u,e[i].v));
solve(1,1,m),cout<<Ans<<endl;
return 0;
}
詳細信息
Subtask #1:
score: 5
Accepted
Test #1:
score: 5
Accepted
time: 37ms
memory: 75648kb
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: 20ms
memory: 67724kb
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: 12ms
memory: 65784kb
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: 15ms
memory: 68872kb
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: 4ms
memory: 65144kb
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: 12ms
memory: 65836kb
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:
70608
result:
wrong answer 1st lines differ - expected: '54418', found: '70608'
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: 68ms
memory: 75856kb
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:
2792142173367
result:
wrong answer 1st lines differ - expected: '2688197428747', found: '2792142173367'
Subtask #5:
score: 0
Wrong Answer
Test #21:
score: 0
Wrong Answer
time: 66ms
memory: 76976kb
input:
9992 99999 500 1 1 2 96661121 1 3 21915940 1 4 110026320 1 5 37433129 1 6 38560320 1 7 83209024 1 8 80352054 1 9 88957672 1 10 65449874 1 11 38239186 1 12 90153728 1 13 30810974 1 14 96493404 1 15 112886259 1 16 87190053 1 17 91182163 1 18 107303768 1 19 101439823 1 20 120601875 1 21 122197599 1 22 ...
output:
177707530446
result:
wrong answer 1st lines differ - expected: '112890891818', found: '177707530446'
Subtask #6:
score: 0
Skipped
Dependency #3:
0%
Subtask #7:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%