不好意思打扰了,之前测试忘记删sum了。。。。。
by AdGats @ 2020-02-20 21:19:22
还是不对,输出3
by AdGats @ 2020-02-20 21:19:57
啊对不起啊各位,我出了俩低级错误:
1.sum循环加时应该将trum改为i,这样才是按航行顺序一个加权值
2.最后加上一个去n号岛忘记加了
所以附上鄙人的菜鸡代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
int floyd[105][105],trline[10005][3];
int main(){
int n,m,j=0,k=0,trum=0,sum=0;
cin>>n>>m;
cin>>k;
for(int i=1;i<=m-1;i++){
j=k;
cin>>k;
trum++;
trline[trum][1]=j,trline[trum][2]=k;
}
//for(int i=1;i<=trum;i++) cout<<trline[i][1]<<' '<<trline[i][2]<<endl;
for(int i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>floyd[i][j];
for(int i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
floyd[j][k]=min(floyd[j][i]+floyd[i][k],floyd[j][k]);
for(int i=1;i<=trum;i++) sum+=floyd[trline[i][1]][trline[i][2]];
sum+=floyd[trline[trum][2]][n];
cout<<sum;
return 0;
}
```
by AdGats @ 2020-02-20 21:29:27
其实并没有任何人来帮你 自言自语地解决了一道题
by _Mikasa @ 2021-12-05 15:31:55