QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#335719#7404. Back and ForthKevin5307AC ✓34ms4464kbC++202.1kb2024-02-23 20:26:392024-02-23 20:26:39

Judging History

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

  • [2024-02-23 20:26:39]
  • 评测
  • 测评结果:AC
  • 用时:34ms
  • 内存:4464kb
  • [2024-02-23 20:26:39]
  • 提交

answer

//Author: Kevin
#include<bits/stdc++.h>
//#pragma GCC optimize("O2")
using namespace std;
#define ll long long
#define ull unsigned ll
#define pb emplace_back
#define mp make_pair
#define ALL(x) (x).begin(),(x).end()
#define rALL(x) (x).rbegin(),(x).rend()
#define srt(x) sort(ALL(x))
#define rev(x) reverse(ALL(x))
#define rsrt(x) sort(rALL(x))
#define sz(x) (int)(x.size())
#define inf 0x3f3f3f3f
#define pii pair<int,int>
#define lb(v,x) (int)(lower_bound(ALL(v),x)-v.begin())
#define ub(v,x) (int)(upper_bound(ALL(v),x)-v.begin())
#define uni(v) v.resize(unique(ALL(v))-v.begin())
#define longer __int128_t
void die(string S){puts(S.c_str());exit(0);}
int p[202];
bool adj[202][202];
int d1[202][202],d2[202][202],d3[202][202];
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		int n,m,a,b;
		cin>>n>>m>>a>>b;
		for(int i=1;i<=n;i++)
			cin>>p[i];
		memset(adj,0,sizeof(adj));
		memset(d1,inf,sizeof(d1));
		memset(d2,inf,sizeof(d2));
		memset(d3,inf,sizeof(d3));
		while(m--)
		{
			int x,y;
			cin>>x>>y;
			adj[x][y]=1;
			d1[x][y]=p[y];
			d2[y][x]=p[x]+p[y];
		}
		for(int k=1;k<=n;k++)
			for(int i=1;i<=n;i++)
				for(int j=1;j<=n;j++)
					d1[i][j]=min(d1[i][j],d1[i][k]+d1[k][j]);
		d3[a][a]=p[a];
		priority_queue<array<int,3>,vector<array<int,3>>,greater<array<int,3>>> pq;
		pq.push({p[a],a,a});
		while(!pq.empty())
		{
			array<int,3> arr=pq.top();
			pq.pop();
			int x=arr[1],y=arr[2],d=arr[0];
			if(d3[x][y]!=d)
				continue;
			for(int j=1;j<=n;j++) if(adj[y][j])
			{
				int nd=d+(j!=x)*p[j];
				if(nd<d3[x][j])
				{
					d3[x][j]=nd;
					pq.push({nd,x,j});
				}
			}
			for(int j=1;j<=n;j++) if(adj[j][x])
			{
				int nd=d+(j!=y)*p[j];
				if(nd<d3[j][y])
				{
					d3[j][y]=nd;
					pq.push({nd,j,y});
				}
			}
			{
				int nd=d+d1[y][x]-p[x];
				if(nd<d3[y][x])
				{
					d3[y][x]=nd;
					pq.push({nd,y,x});
				}
			}
		}
		if(d3[b][b]==inf)
			cout<<-1<<endl;
		else
			cout<<d3[b][b]<<endl;
	}
	return 0;
}

这程序好像有点Bug,我给组数据试试?

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 4284kb

input:

3
4 5 1 4
1 1 1 1
1 2
2 3
3 1
4 2
3 4
4 4 1 2
1 1 1 1
1 2
2 3
3 4
4 1
4 8 1 3
1 100 1 1
1 2
2 1
2 3
3 2
1 4
4 1
3 4
4 3

output:

4
4
3

result:

ok 3 number(s): "4 4 3"

Test #2:

score: 0
Accepted
time: 1ms
memory: 4312kb

input:

1
2 0 1 2
1 1

output:

-1

result:

ok 1 number(s): "-1"

Test #3:

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

input:

10
20 40 5 16
2 1 1 1 2 1 1 2 1 1 1 2 1 1 1 2 1 2 1 2
7 2
8 5
15 4
17 13
11 6
9 2
12 13
12 1
1 8
2 20
6 9
18 3
2 15
10 12
4 17
11 5
19 15
15 9
14 7
11 2
1 15
16 1
13 3
11 16
5 10
19 6
1 3
13 14
20 11
6 19
7 9
20 12
17 18
13 9
4 18
3 19
13 17
19 9
19 10
8 6
20 40 10 1
2 2 2 2 1 2 1 2 2 2 2 2 1 2 2 1 ...

output:

15
14
11
12
15
8
9
13
12
12

result:

ok 10 numbers

Test #4:

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

input:

10
20 40 17 11
8 3 9 8 9 2 9 3 8 10 4 7 5 2 5 2 7 5 8 2
14 1
6 5
9 13
13 20
15 7
16 12
9 16
9 11
1 2
8 13
3 17
18 2
2 15
4 15
5 18
11 18
15 1
18 11
8 9
20 1
7 4
4 14
1 8
5 19
13 12
5 3
12 8
7 14
3 18
2 19
11 13
12 6
20 10
20 6
19 7
10 20
17 16
10 19
19 3
15 14
20 40 20 2
6 2 3 1 8 3 9 8 5 2 7 8 2 5 ...

output:

50
32
30
52
42
45
34
55
40
55

result:

ok 10 numbers

Test #5:

score: 0
Accepted
time: 1ms
memory: 4132kb

input:

10
20 40 18 6
66 8 72 32 88 52 22 28 50 62 1 73 83 81 14 82 50 90 90 87
13 10
11 18
16 12
20 8
11 15
3 12
15 2
14 13
17 7
2 5
18 3
4 2
15 4
2 15
7 9
2 1
17 14
14 18
15 8
16 1
4 17
14 19
5 8
20 11
7 5
19 16
6 10
1 4
14 20
5 6
12 13
8 13
2 18
10 17
9 20
12 15
1 5
7 6
16 18
9 3
20 40 10 20
46 66 84 50 ...

output:

525
239
429
400
328
517
229
391
664
376

result:

ok 10 numbers

Test #6:

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

input:

4
50 100 16 46
2 3 3 1 2 1 2 5 2 5 5 5 5 1 3 1 1 5 2 1 3 5 5 3 3 1 4 5 1 3 1 5 3 4 1 2 1 4 4 1 1 3 5 1 2 5 3 3 3 3
28 1
7 18
3 17
48 5
27 42
18 49
6 5
26 27
48 25
15 21
41 15
32 31
39 30
30 22
23 2
35 9
19 37
44 22
50 43
14 46
26 3
24 2
37 23
25 30
39 19
36 41
45 17
31 50
26 38
14 38
30 3
3 10
13 7
...

output:

36
38
23
36

result:

ok 4 number(s): "36 38 23 36"

Test #7:

score: 0
Accepted
time: 30ms
memory: 4272kb

input:

1
200 300 169 170
2 1 2 1 1 2 1 1 2 2 2 2 2 1 2 2 2 1 1 2 2 2 2 2 2 1 2 1 2 1 2 2 2 2 2 1 2 2 2 1 1 2 2 2 1 2 2 2 2 2 1 1 2 2 1 2 2 2 1 2 2 2 1 2 1 1 1 2 2 1 2 2 2 2 2 1 2 2 2 2 1 1 2 2 1 2 1 1 2 2 1 1 1 2 1 2 2 1 2 1 1 1 1 2 2 1 2 2 2 1 1 1 2 1 2 1 1 1 1 1 1 1 2 2 1 2 2 1 1 2 1 2 2 2 1 1 1 2 1 2 1 ...

output:

30

result:

ok 1 number(s): "30"

Test #8:

score: 0
Accepted
time: 32ms
memory: 4456kb

input:

1
200 300 100 39
11 5 9 6 5 1 7 4 3 3 13 4 5 12 8 9 2 1 5 4 6 7 10 12 12 4 13 1 7 14 1 8 15 10 3 3 11 15 11 8 4 5 9 15 7 13 12 13 1 14 9 15 5 1 7 2 3 5 6 7 12 10 9 8 12 11 15 15 8 10 9 12 14 1 1 10 3 15 10 7 2 2 10 10 9 13 15 10 7 3 8 1 15 12 3 14 13 15 11 10 3 1 8 4 9 13 5 1 8 15 10 11 15 6 5 1 10 ...

output:

264

result:

ok 1 number(s): "264"

Test #9:

score: 0
Accepted
time: 32ms
memory: 4256kb

input:

1
200 400 90 131
2 1 1 1 2 1 2 2 1 2 2 2 1 2 1 1 2 1 2 2 1 2 1 2 2 2 1 2 2 1 2 2 1 2 1 2 1 1 2 2 2 2 1 2 2 1 2 2 1 2 2 1 1 1 1 1 2 1 2 2 1 1 1 1 1 2 1 1 2 1 2 2 1 2 2 1 1 2 1 2 1 2 2 1 2 2 1 2 1 2 1 1 2 1 2 2 2 2 1 2 1 2 2 1 1 2 1 1 2 1 2 2 2 1 2 2 2 2 2 1 1 1 2 1 1 1 1 1 2 2 2 1 2 1 2 1 1 1 1 2 1 2...

output:

21

result:

ok 1 number(s): "21"

Test #10:

score: 0
Accepted
time: 34ms
memory: 4288kb

input:

1
200 400 196 119
15 11 14 6 9 12 12 1 13 2 5 9 15 10 11 12 15 13 9 10 15 1 15 2 2 10 15 3 5 3 15 13 13 1 1 13 10 10 11 1 12 7 4 3 8 7 13 13 5 13 1 3 1 1 1 4 10 10 6 13 9 7 1 13 13 7 7 10 14 7 9 2 3 8 1 2 15 1 5 11 14 15 12 5 15 11 12 14 10 14 14 14 15 7 5 1 10 7 14 12 9 5 7 9 8 10 2 5 5 15 14 9 4 3...

output:

102

result:

ok 1 number(s): "102"

Test #11:

score: 0
Accepted
time: 32ms
memory: 4240kb

input:

1
200 800 91 57
2 2 2 1 2 2 1 2 1 2 2 2 1 1 2 1 1 2 1 1 1 2 2 1 1 1 1 1 1 1 2 2 1 1 1 1 2 1 1 2 2 1 1 1 2 1 2 1 1 1 2 2 2 1 1 1 2 1 1 2 1 2 2 2 1 2 2 2 2 1 1 1 1 2 2 2 2 2 1 2 1 1 2 1 1 1 1 2 2 2 2 2 1 1 1 1 2 1 2 2 1 1 1 2 1 1 2 2 1 1 1 1 1 1 1 1 2 2 1 2 2 2 1 2 1 1 2 1 1 1 2 1 2 2 1 2 1 1 1 1 2 1 ...

output:

11

result:

ok 1 number(s): "11"

Test #12:

score: 0
Accepted
time: 28ms
memory: 4292kb

input:

1
200 800 26 27
7 5 1 8 14 11 5 5 15 15 3 2 6 2 7 7 4 2 4 5 9 1 13 15 11 2 13 10 10 12 3 4 2 6 1 1 10 11 7 2 8 13 13 10 14 4 14 4 11 9 11 6 14 10 4 14 12 10 10 2 8 6 10 12 13 13 12 15 14 10 15 4 9 8 9 1 15 4 11 15 9 9 12 5 4 3 10 1 2 10 10 13 1 6 8 8 3 5 13 6 3 4 5 11 1 1 5 5 14 3 1 10 12 9 3 7 14 3...

output:

55

result:

ok 1 number(s): "55"

Test #13:

score: 0
Accepted
time: 33ms
memory: 4464kb

input:

1
200 1600 91 175
2 1 2 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 2 2 2 1 1 1 1 2 2 1 2 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 1 1 2 2 2 1 2 2 1 2 1 2 2 1 2 2 2 1 1 2 1 1 1 2 1 1 1 2 1 2 2 1 1 2 2 1 2 2 1 2 1 1 1 1 1 1 2 2 2 1 1 1 1 2 2 2 1 2 2 1 1 1 2 1 1 1 2 1 1 2 1 2 2 1 1 ...

output:

8

result:

ok 1 number(s): "8"

Test #14:

score: 0
Accepted
time: 30ms
memory: 4260kb

input:

1
200 1600 73 167
1 4 6 11 1 13 4 5 7 4 12 4 1 8 10 10 4 2 1 15 1 6 7 13 14 6 11 11 13 15 9 5 14 12 1 14 3 15 2 11 4 3 5 11 8 15 6 2 1 5 8 15 3 7 1 5 6 14 11 13 9 2 3 14 5 3 3 2 5 14 5 7 6 8 4 10 8 13 3 9 7 3 9 7 7 12 4 12 7 9 5 5 1 13 10 9 4 3 3 2 12 12 12 7 4 5 2 11 12 9 11 3 7 14 9 8 4 11 11 7 7 ...

output:

37

result:

ok 1 number(s): "37"

Test #15:

score: 0
Accepted
time: 32ms
memory: 4464kb

input:

1
200 3200 36 187
3 8 13 7 8 3 2 9 12 8 15 5 8 4 5 13 12 15 3 2 6 8 9 12 14 7 10 15 7 13 6 10 6 2 12 9 8 2 13 13 3 13 3 13 8 8 11 3 7 12 6 6 14 8 11 5 5 6 10 12 3 1 8 6 14 6 11 12 4 10 6 4 4 7 8 9 1 11 11 9 9 5 4 10 4 12 5 12 15 3 15 4 6 14 14 8 13 15 7 11 1 6 10 5 2 1 5 2 1 5 8 2 12 8 13 12 11 13 1...

output:

22

result:

ok 1 number(s): "22"

Extra Test:

score: 0
Extra Test Passed