首页 > 代码库 > CodeForces 295B
CodeForces 295B
/*从要删除最后一个到第一个进行松弛操作,
因为如果从第一个到最后一个进行松弛操作,弟24行有可能不会更新,若要更新,就需要再一次对d[N][N]初始化
*/
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 typedef long long ll; 5 #define N 505 6 //const int inf=1<<30; 7 ll d[N][N],dis[N]; 8 int del[N]; 9 bool v[N];10 int main(){11 int n,i,j,l;12 scanf("%d",&n);13 for(int i=0;i<n;i++){14 for(int j=0;j<n;j++){15 cin>>d[i][j];16 }17 }18 for(i=0;i<n;i++){cin>>del[i];del[i]-=1;}19 for(i=n-1;i>=0;i--){20 v[del[i]]=1;21 ll k=0;22 for(j=0;j<n;j++){23 for(l=0;l<n;l++){24 d[j][l]=min(d[j][l],d[j][del[i]]+d[del[i]][l]);25 }26 }27 for(j=0;j<n;j++){28 for(l=0;l<n;l++){29 if(v[l]&&v[j]){30 k+=d[j][l];31 }32 }33 }34 dis[i]=k;35 }36 for(i=0;i<n-1;i++)cout<<dis[i]<<" ";37 cout<<dis[n-1]<<endl;38 return 0;39 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。