题意:改变了图中一条边的长度,求此时个点之间的最短路径长度和。
一开始错吧改变的边的长度当成了两点之间的最短路径来用...
#include <iostream>
#include <cstdio>
#include <algorithm>
#define LL long long
const int LMT=302;
using namespace std;
int gra[LMT][LMT];
int main()
{
int n,k;
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&gra[i][j]);
scanf("%d",&k);
while(k--)
{
int a,b,x;
LL ans=0;
scanf("%d%d%d",&a,&b,&x);
a--;b--;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
gra[j][i]=gra[i][j]=min(gra[i][j],gra[i][a]+x+gra[b][j]);
gra[j][i]=gra[i][j]=min(gra[i][j],gra[i][b]+x+gra[a][j]);
}
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
ans+=gra[i][j]*1LL;
cout<<ans<<endl;//ll错误
}
return 0;
}