用floyd算法做的,我能问一句为什么最大值赋值成2147483647就不行,改成题解中的0x3f3f3f3f3f3f3f3fll就过了?
原代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=505;
const int oo=2147483647;
...
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j){
f[i][j]=0;
}
else if(a[j].x>=a[i].x&&a[j].y>=a[i].y){
f[i][j]=abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y);
}
else{
f[i][j]=oo;
}
}
}
AC代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef long long ll;
const int N=505;
const int oo=0x3f3f3f3f3f3f3f3fll;;
...
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j){
f[i][j]=0;
}
else if(x[j]>=x[i]&&y[j]>=y[i]){
f[i][j]=abs(x[j]-x[i])+abs(y[i]-y[j])-1;
}
else{
f[i][j]=oo;
}
}
}
为啥不行?范围没到ll啊