QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#199763#7343. Bicycle RacePhantomThreshold#WA 4ms12600kbC++202.1kb2023-10-04 13:59:082023-10-04 13:59:08

Judging History

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

  • [2023-10-04 13:59:08]
  • 评测
  • 测评结果:WA
  • 用时:4ms
  • 内存:12600kb
  • [2023-10-04 13:59:08]
  • 提交

answer

#include<bits/stdc++.h>
#define ll long long
//#define int long long
using namespace std;

const int maxn = 100005;

int n,m;
vector< pair<int,int> >V[maxn],E[maxn];
int d[maxn],p[maxn],pos[maxn];
inline bool cmp(const int x,const int y)
{
	return d[x]<d[y];
}

int v[maxn];
struct node
{
	int mx[3],id[3];
	node()
	{
		memset(mx,-1,sizeof mx);
		memset(id,0,sizeof id);
	}
	void upd(int c,int i)
	{
		if(id[0]==i) mx[0]=max(mx[0],c);
		else if(id[1]==i) mx[1]=max(mx[1],c);
		else if(id[2]==i) mx[2]=max(mx[2],c);
		else
		{
			mx[2]=c,id[2]=i;
		}
		
		if(mx[1]<mx[2]) swap(mx[1],mx[2]),swap(id[1],id[2]);
		if(mx[0]<mx[1]) swap(mx[0],mx[1]),swap(id[0],id[1]);
		if(mx[1]<mx[2]) swap(mx[1],mx[2]),swap(id[1],id[2]);
	}
	int query(int x,int y)
	{
		for(int i=0;i<=2;i++)
		{
			if(id[i]!=x && id[i]!=y) return mx[i];
		}
		assert(0);
	}
}val[maxn];

signed main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int x,y,c; cin>>x>>y>>c;
		V[x].emplace_back(y,c);
		V[y].emplace_back(x,c);
		d[x]++,d[y]++;
	}
	
	for(int i=1;i<=n;i++) p[i]=i;
	sort(p+1,p+n+1,cmp);
	for(int i=1;i<=n;i++) pos[p[i]]=i;
	
	for(int x=1;x<=n;x++) for(auto [y,c]:V[x])
	{
		if(pos[y]>pos[x])
			E[pos[x]].emplace_back(pos[y],c);
	}
	
	int ans=-1;
	for(int i=1;i<=n;i++)
	{
		for(auto [y,c]:E[i]) v[y]=c;
		
		for(auto [y,c]:E[i])
		{
			for(auto [yy,cc]:E[y]) if(v[yy]>0)
			{
				int tc;
				
				tc= val[i].query(y,yy);
				if(tc!=-1) ans=max(ans, v[yy]+c+cc+tc );
				
				tc= val[y].query(i,yy);
				if(tc!=-1) ans=max(ans, v[yy]+c+cc+tc );
				
				tc= val[yy].query(i,y);
				if(tc!=-1) ans=max(ans, v[yy]+c+cc+tc );
			}
			
			for(auto [yy,cc]:E[y]) if(v[yy]>0)
			{
				val[i].upd(v[yy]+c+cc, yy);
			}
		}
		
		for(auto [y,c]:E[i])
		{
			for(auto [yy,cc]:E[y]) if(v[yy]>0)
			{
				val[y].upd(v[yy]+c+cc,yy);
				
				val[yy].upd(v[yy]+c+cc,y);
			}
		}
		
		for(auto [y,c]:E[i]) v[y]=0;
	}
	cout<<ans<<endl;
	
	return 0;
}

/*
6 9
1 2 3
2 3 1
3 4 2
4 5 1
3 5 7
2 5 2
1 5 3
4 6 2
5 6 1

*/

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 12188kb

input:

6 9
1 2 3
2 3 1
3 4 2
4 5 1
3 5 7
2 5 2
1 5 3
4 6 2
5 6 1

output:

18

result:

ok 1 number(s): "18"

Test #2:

score: 0
Accepted
time: 0ms
memory: 12244kb

input:

6 6
1 3 2
1 2 2
2 3 4
3 4 1
3 6 6
1 4 8

output:

-1

result:

ok 1 number(s): "-1"

Test #3:

score: 0
Accepted
time: 2ms
memory: 12276kb

input:

5 6
1 4 2
1 3 6
5 2 10
3 2 4
4 2 1
5 4 7

output:

-1

result:

ok 1 number(s): "-1"

Test #4:

score: 0
Accepted
time: 0ms
memory: 12140kb

input:

5 10
2 1 9
3 1 4
3 2 3
4 1 5
4 2 9
4 3 9
5 1 5
5 2 6
5 3 10
5 4 1

output:

43

result:

ok 1 number(s): "43"

Test #5:

score: 0
Accepted
time: 2ms
memory: 12268kb

input:

5 10
2 1 9
3 1 8
3 2 8
4 1 1
4 2 2
4 3 8
5 1 10
5 2 1
5 3 10
5 4 3

output:

46

result:

ok 1 number(s): "46"

Test #6:

score: 0
Accepted
time: 0ms
memory: 12196kb

input:

5 9
1 3 4
4 1 10
1 5 9
5 2 9
3 5 9
2 3 7
5 4 1
2 1 7
2 4 1

output:

45

result:

ok 1 number(s): "45"

Test #7:

score: 0
Accepted
time: 2ms
memory: 12264kb

input:

5 8
2 1 10
5 2 5
1 3 7
3 5 8
3 2 5
2 4 6
4 3 5
4 5 6

output:

41

result:

ok 1 number(s): "41"

Test #8:

score: 0
Accepted
time: 2ms
memory: 12288kb

input:

200 2000
182 97 91166
25 11 25393
179 58 43378
77 41 75588
139 96 94145
135 56 4609
190 159 47293
100 30 33854
21 132 93072
174 135 93547
144 137 81216
199 102 68247
89 155 53788
83 25 64607
166 179 44534
101 3 1474
37 106 57970
187 41 19892
16 76 32024
182 13 32061
72 69 5823
187 185 13918
151 86 3...

output:

552426

result:

ok 1 number(s): "552426"

Test #9:

score: 0
Accepted
time: 3ms
memory: 12420kb

input:

400 4000
102 372 24346
360 153 94255
272 316 33427
215 71 52304
368 202 60854
350 206 16796
32 372 31489
109 14 95840
163 71 79896
330 393 95303
324 110 13216
197 341 69668
54 241 46100
222 246 67388
140 13 539
272 79 22065
389 221 81398
187 122 60482
198 352 4291
196 14 18220
215 93 64141
336 54 54...

output:

545402

result:

ok 1 number(s): "545402"

Test #10:

score: 0
Accepted
time: 0ms
memory: 12536kb

input:

600 6000
270 248 73879
94 543 63116
118 174 23476
152 301 12668
597 557 27564
566 156 28983
322 585 15685
319 598 41474
506 411 50369
334 450 80707
103 83 61569
195 333 71089
219 576 54764
409 18 70169
115 296 72896
92 155 42655
542 537 4827
387 202 1071
209 15 4380
511 165 22459
485 571 94537
570 2...

output:

545966

result:

ok 1 number(s): "545966"

Test #11:

score: 0
Accepted
time: 0ms
memory: 12600kb

input:

800 8000
391 123 23412
629 133 31977
411 31 13525
489 131 89384
427 512 94273
29 506 24818
564 397 99881
528 382 3460
448 702 20841
290 156 82464
235 56 9922
192 772 88862
784 63 47076
148 591 72950
490 531 45253
263 231 63246
295 453 44608
234 683 58012
562 56 32475
671 464 90539
454 237 97128
635 ...

output:

537316

result:

ok 1 number(s): "537316"

Test #12:

score: -100
Wrong Answer
time: 4ms
memory: 12552kb

input:

900 9000
751 713 98178
420 281 8232
734 560 50374
234 645 19566
641 65 77628
537 681 89087
561 4 33803
457 274 26277
367 372 56077
816 485 16990
425 42 67747
543 144 89573
43 230 93232
441 701 66164
801 772 31431
773 392 73541
771 535 6323
634 271 20131
429 870 52257
54 265 33619
425 148 84463
285 6...

output:

567227

result:

wrong answer 1st numbers differ - expected: '543761', found: '567227'