题目链接:http://codeforces.com/problemset/problem/295/B

题目大意:
给出n个点的完全有权有向图,每次删去一个点,求删掉该点之前整张图各个点的最短路之和(包括i->j和j->i)。
解题思路:
这里利用了floyd的性质,下面看一下floyd的写法:
for (k=1;k<=n;k++)
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a[i][j] = min(a[i][j], a[i][k]+a[k][j]);
每次利用点k进行松弛,可以理解为将k点加入图中,所以我们可以倒着加点,如下所示:
for (k=n;k>=1;k--)
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a[i][j] = min(a[i][j], a[i][p[k]]+a[p[k]][j]);
每次松弛完顺便记录结果即可。

代码:

 #include<bits/stdc++.h>
#define lc(a) (a<<1)
#define rc(a) (a<<1|1)
#define MID(a,b) ((a+b)>>1)
#define fin(name) freopen(name,"r",stdin)
#define fout(name) freopen(name,"w",stdout)
#define clr(arr,val) memset(arr,val,sizeof(arr))
#define _for(i,start,end) for(int i=start;i<=end;i++)
#define FAST_IO ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef long long LL;
const int N=1e3+;
const int INF=0x3f3f3f3f;
const double eps=1e-; int p[N];
LL mp[N][N];
LL ans[N];
bool del[N]; int main(){
FAST_IO;
int n;
cin>>n;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
cin>>mp[i][j];
}
}
for(int i=;i<=n;i++){
del[i]=true;
cin>>p[i];
}
//利用floyd松弛的特性,每次松弛相当于加点,所以直接倒着加点,同时记录结果
for(int k=n;k>=;k--){
int t=p[k];
del[t]=false;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
mp[i][j]=min(mp[i][j],mp[i][t]+mp[t][j]);
}
}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(!del[i]&&!del[j]){
ans[k]+=mp[i][j];
}
}
}
}
for(int i=;i<=n;i++){
cout<<ans[i]<<endl;
}
return ;
}

最新文章

  1. [4]xlongwei工具类
  2. java的对象的总结:(PO,VO,DAO,BO,POJO)
  3. TCP/ip协议栈之内核调优
  4. 如何将Java源代码文件的编码从GBK转为UTF-8?
  5. Scut 进阶:网络模型拓扑
  6. 转:alphaImageLoader滤镜加载后 链接不能点击
  7. Linux kill 命令 以及USR1 信号解释
  8. 【转】package control安装成功,但是ctrl+shiif+p调不出来面板,preference里面也没有Package Control
  9. [转帖]总结ORACLE系统视图及表大全
  10. 配置_DruidDataSource参考配置
  11. 前端 HTML 常用标签 head标签相关内容 meta标签
  12. 字体在win10下显示模糊,有锯齿
  13. 01二维矩阵中最大全为1的正方形maxSquare——经典DP问题(二维)
  14. 找峰值I II &#183; Find Peak Element I ii
  15. JS localStorage 存储变量
  16. HDU 1232 畅通工程(道路连接)(裸并查集)
  17. 【Sklearn系列】KNN算法
  18. MariaDB 10 (MySQL DB) 多主复制并实现读写分离
  19. sass的颜色函数
  20. shell遍历文件夹并执行命令

热门文章

  1. bzoj 3779: 重组病毒
  2. lumen 使用 laravel-cors 的时候, 使用 dd 函数的解决方法
  3. php 中的错误处理机制
  4. 【Asp.net入门3-03】jQuery-选择元素
  5. ubuntu 安装node.js
  6. django中模板变量与内置标签以及过滤器
  7. python的if条件语句的语法和案例
  8. python 常用模块之os
  9. 华为手机不能连接android studio进行调试的解决办法
  10. windows下用python转换markdown到html