C. Roads in Berland
2024-08-26 13:22:42
题目链接:
http://codeforces.com/problemset/problem/25/C
题意:
给一个最初的所有点与点之间的最短距离的矩阵。然后向图里加边,原有的边不变,问加边后的各个顶点的距离是多少。
思路:
这个一看就知道是folyd的变种,关键是状态转移怎么处理,具体看代码。
代码:
#include<bits/stdc++.h>
#define LL long long using namespace std;
const int maxn=;
int dist[maxn][maxn];
LL ans;
void modify(int u,int v,int w)
{
if(dist[u][v]>w)
{
ans-=(dist[v][u]-w);
dist[u][v]=w;
}
return;
}
int main()
{
int n;
cin>>n;
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
cin>>dist[i][j];
if(j>i)
{
ans+=dist[i][j];
}
} }
//cout<<ans<<endl;
int k;
cin>>k;
for(int i=;i<=k;i++)
{
int u,v,w;
cin>>u>>v>>w;
modify(u,v,w);
if(dist[u][v]!=dist[v][u])
{
dist[v][u]=dist[u][v];
}
//cout<<ans<<endl;
for(int p=;p<=n;p++)
{
for(int q=;q<=n;q++)
{
modify(p,q,dist[p][u]+dist[v][q]+w);
if(dist[p][q]!=dist[q][p])
{
dist[q][p]=dist[p][u]+dist[v][q]+w;
}
}
}
cout<<ans<<endl;
} return ;
}
最新文章
- logistic公式形式的由来,从广义线性回归说起
- 转: linux内核版本本地版本号的检查——setlocalversion
- https 页面中引入 http 资源的解决方式
- ccc 单点触控
- js-小效果-瀑布流
- SGU 180 Inversions(离散化 + 线段树求逆序对)
- Greedy:三角形问题
- Java拾穗
- 【测试Json的多空格问题】
- HTML5学习笔记之Input类型
- Python之线程&;进程
- 【转】Android必备知识点- Android文件(File)操作
- 旁路、去耦、Bulk以及耦合电容的作用与区别
- [16]Windows内核情景分析 --- 服务管理
- 06: linux下python开发环境梳理
- C语言 &#183; 分数统计
- Git忽略规则及.gitignore规则不生效的解决办法(转)
- android monkey app乱点测试
- 小记tensorflow-1:tf.nn.conv2d 函数介绍
- (WPF)Storyboard