QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#243997#1274. Walking PlanPhantomThreshold#AC ✓352ms7748kbC++201.7kb2023-11-08 20:11:472023-11-08 20:11:48

Judging History

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

  • [2023-11-08 20:11:48]
  • 评测
  • 测评结果:AC
  • 用时:352ms
  • 内存:7748kb
  • [2023-11-08 20:11:47]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int B=100;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	int T;
	cin>>T;
	while(T--)
	{
		int n,m;
		cin>>n>>m;
		vector<vector<int>> G(n+5,vector<int>(n+5,1e9));
//		for(int i=1;i<=n;i++)G[i][i]=0;
		for(int i=1;i<=m;i++)
		{
			int u,v,w;
			cin>>u>>v>>w;
			G[u][v]=min(G[u][v],w);
		}
		vector<vector<vector<int>>> disS(B+B+5,vector<vector<int>>(n+5,vector<int>(n+5,1e9))),
									disB(B+5,vector<vector<int>>(n+5,vector<int>(n+5,1e9)));
		for(int i=1;i<=n;i++)disS[0][i][i]=0;
		for(int t=1;t<=B+B;t++)
		{
			for(int i=1;i<=n;i++)
				for(int j=1;j<=n;j++)
					for(int k=1;k<=n;k++)
						disS[t][i][k]=min(disS[t][i][k],disS[t-1][i][j]+G[j][k]);
		}
		for(int t=B+B;t>0;t--)
		{
			for(int i=1;i<=n;i++)
				for(int j=1;j<=n;j++)
					disS[t-1][i][j]=min(disS[t-1][i][j],disS[t][i][j]);
		}
		for(int i=1;i<=n;i++)disB[0][i][i]=0;
		for(int t=1;t<=B;t++)
		{
			for(int i=1;i<=n;i++)
				for(int j=1;j<=n;j++)
					for(int k=1;k<=n;k++)
						disB[t][i][k]=min(disB[t][i][k],disB[t-1][i][j]+disS[B][j][k]);
		}
		
//		cerr<<"pre:\n";
//		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cerr<<G[i][j]<<" \n"[j==n];
//		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cerr<<disS[1][i][j]<<" \n"[j==n];
//		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cerr<<disS[2][i][j]<<" \n"[j==n];
		
		
		int q;
		cin>>q;
		while(q--)
		{
			int u,v,x;
			cin>>u>>v>>x;
			int ans=1e9;
			for(int i=1;i<=n;i++)
			{
				ans=min(ans,disS[x%B][u][i]+disB[x/B][i][v]);
//				cerr<<"upd "<<i<<' '<<disS[x%B][u][i]+disB[x/B][i][v]<<endl;
			}
			if(ans==1e9)ans=-1;
			cout<<ans<<"\n";
		}
	}
	
	return 0;
}

详细

Test #1:

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

input:

2
3 3
1 2 1
2 3 10
3 1 100
3
1 1 1
1 2 1
1 3 1
2 1
1 2 1
1
2 1 1

output:

111
1
11
-1

result:

ok 4 lines

Test #2:

score: 0
Accepted
time: 265ms
memory: 7748kb

input:

10
5 10
4 2 55
2 1 26
3 4 83
5 2 16
4 5 54
3 4 38
2 1 68
2 5 1
4 5 85
4 2 60
20
2 1 13
1 4 17
3 2 20
2 4 16
4 2 17
4 2 2
3 1 2
1 5 10
2 1 8
4 5 15
4 2 16
3 1 18
5 2 7
4 2 9
4 3 16
1 4 18
3 2 5
1 5 9
5 1 19
1 2 16
20 50
4 16 25
3 16 990
9 18 863
19 12 236
4 10 360
13 4 585
14 17 164
8 18 198
2 17 804...

output:

128
-1
246
-1
191
70
119
-1
94
173
189
253
67
123
-1
-1
125
-1
195
-1
-1
23449
3476
18735
17412
23124
29499
26452
9757
21128
9524
-1
4486
8797
8041
33717
32669
5108
32534
13020
22800
4411
3529
37460
4191
15863
5342
22005
-1
14496
16535
13644
-1
33956
28717
24721
13816
26289
8840
28137
9991
14430
-1
...

result:

ok 406120 lines

Test #3:

score: 0
Accepted
time: 352ms
memory: 7680kb

input:

10
5 10
4 1 62
3 5 93
4 5 99
2 5 63
2 4 26
5 3 31
2 5 14
5 3 54
1 2 47
1 5 18
200
2 5 8
3 1 17
1 5 11
2 1 17
4 2 1
4 2 13
5 1 13
5 2 2
1 4 8
2 3 4
1 1 1
1 5 7
3 5 3
5 3 12
1 4 18
3 1 11
5 4 2
1 3 4
5 5 13
2 3 12
1 4 19
3 5 17
3 5 20
3 3 1
5 5 9
1 5 7
2 4 9
4 5 16
1 3 19
4 1 18
2 1 16
3 5 17
4 5 7
3 ...

output:

365
-1
466
763
109
649
-1
-1
343
137
135
288
217
775
883
-1
-1
173
868
531
883
1085
1333
124
620
288
431
744
848
872
763
1085
339
-1
343
-1
341
-1
161
784
-1
109
244
49
-1
424
871
-1
-1
872
587
393
270
763
61
701
620
-1
-1
270
558
-1
559
341
-1
540
135
-1
857
-1
-1
810
31
713
467
-1
-1
-1
277
784
69...

result:

ok 900200 lines