题目1343:城际公路网

来源:互联网 发布:察网中国 知乎 编辑:程序博客网 时间:2024/04/25 05:17

算法思想:floyd算法

代码:

#include<stdio.h>void update(int d[302][302],int n,int w,int a,int b){int i,j,k;for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(d[i][a]+w+d[b][j]<d[i][j])d[i][j] = d[j][i] = d[i][a]+w+d[b][j];if(d[i][b]+w+d[a][j]<d[i][j])d[i][j] = d[j][i] = d[i][b]+w+d[a][j];}}long sum(int d[302][302],int n){int i,j;long sum = 0;for(i=1;i<n;i++){for(j=i+1;j<=n;j++){sum += d[i][j];}}return sum;}int main(){freopen("in","r",stdin);int n;int d[302][302];while(scanf("%d",&n)!=EOF){int i,j,m,a,b,w;long ans;for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%d",&d[i][j]);}}scanf("%d",&m);for(i=0;i<m;i++){scanf("%d%d%d",&a,&b,&w);update(d,n,w,a,b);ans = sum(d,n);printf("%ld\n",ans);}}return 0;}


原创粉丝点击