lanqiao 1460 路径(floyd)
This commit is contained in:
35
12lanqiao/test5-2.cpp
Normal file
35
12lanqiao/test5-2.cpp
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
// lanqiao 1460 路径(floyd)
|
||||||
|
#include<bits/stdc++.h>
|
||||||
|
using namespace std;
|
||||||
|
const int N = 3e3 + 10, INF = INT_MAX;
|
||||||
|
bool vis[N]; // 标记数组
|
||||||
|
int mindis[N][N]; // 最短路数组
|
||||||
|
int s = 1, n = 2021;
|
||||||
|
|
||||||
|
// floyd求多源最短路-时间复杂度-O(n^3)
|
||||||
|
void floyd(){
|
||||||
|
// 枚举中转点
|
||||||
|
for(int k = 1; k <= n; k++){
|
||||||
|
// 枚举任意两点
|
||||||
|
for(int i = 1; i <= n; i++){
|
||||||
|
for(int j = 1; j <= n; j++){
|
||||||
|
if(mindis[i][k] != INF && mindis[k][j] != INF){
|
||||||
|
if(mindis[i][k] + mindis[k][j] < mindis[i][j]){
|
||||||
|
mindis[i][j] = mindis[i][k] + mindis[k][j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int main(){
|
||||||
|
fill(mindis[0], mindis[0] + N * N, INF);
|
||||||
|
for(int i = 1; i <= n; i++){
|
||||||
|
for(int j = max(i-21, 1); j <= min(i+21, 2021); j++){
|
||||||
|
if(i != j) mindis[i][j] = mindis[j][i] = lcm(i, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
floyd();
|
||||||
|
cout << mindis[1][n] << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user