QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#296540#7871. 命运OccDreamer5 8ms12604kbC++142.1kb2024-01-03 09:30:172024-01-03 09:30:17

Judging History

你现在查看的是最新测评结果

  • [2024-01-03 09:30:17]
  • 评测
  • 测评结果:5
  • 用时:8ms
  • 内存:12604kb
  • [2024-01-03 09:30:17]
  • 提交

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%