路径(蓝桥杯)

#include
#include
#define INF 0x3f3f3f3f  
using namespace std; 
int gcd(int a,int b){
	return a % b == 0 ? b : gcd(b,a % b);
}

int m[4022][4022];
int main(){
	int n = 2021;
	for(int i = 1; i <= n; i ++){
		for(int j = 1; j <= n; j ++){
			if(abs(i - j) <= 21){
				m[i][j] = (i * j) / gcd(i,j);	
				m[j][i] = (i * j) / gcd(i,j);
			}else{
				m[i][j] = INF;	
				m[j][i] = INF;
			}
		}
	}
	
	for(int k = 1; k <= n; k ++){
		for(int i = 1; i <= n; i ++){
			for(int j = 1; j <= n; j ++){
				if(m[i][k] != -1 && m[k][j] != -1)
				m[i][j] = min(m[i][j],m[i][k]+m[k][j]);
			}
		}
	}
	cout<

你可能感兴趣的:(蓝桥杯,c++,算法)