先看原文
输入格式
第一行一个整数 n。
第 i+1 行(1≤i≤n)有 n+1−i 个整数,表示每一种询问所需的花费。
其中 c
ij
(对区间 [i,j] 进行询问的费用,1≤i≤j≤n)为第 i+1 行第 j+1−i 个数。
我的看法
由于一开始已经输入了n(占了一行),所以原文在措辞中才使用“第 i+1 行(1≤i≤n)有 n+1−i 个整数,表示每一种询问所需的花费。”
既然如此,那为什么不是这样建边
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
cin>>z;
add(i,j,z);
add(j,i,z);
}
d[i]=INF;
}
而是这样
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
cin>>z;
add(i-1,j,z);
add(j,i-1,z);
}
d[i]=INF;
}