ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Codeforces 25C】Roads in Berland

2019-04-14 16:54:07  阅读:281  来源: 互联网

标签:题意 int 25C ll Codeforces long i1 ans Roads


【链接】 我是链接,点我呀:)
【题意】


题意

【题解】


用floyd思想。
求出来这条新加的边影响到的点对即可。
然后尝试更新点对之间的最短路就好。
更新之后把差值从答案里面减掉。

【代码】

#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int N = 300;
int n;
ll dis[N+10][N+10];
int k;
ll ans = 0;

void updata(ll &x,ll y){
    if (x>y){
        ans-=(x-y);
        x = y;
    }
}

int main(){
    ios::sync_with_stdio(0),cin.tie(0);
    cin >> n;
    for (int i = 1;i <= n;i++)
        for (int j = 1;j <= n;j++){
            cin >> dis[i][j];
            if (i<=j) ans += dis[i][j];
        }
    cin >> k;
    for (int i = 1;i <= k;i++){
        int x,y,z;
        cin >> x >> y >> z;
        for (int i1 = 1;i1 <= n;i1++)
            for (int i2 = 1;i2<=n;i2++){
                updata(dis[x][y],z);
                if (dis[x][y]!=dis[y][x]){
                    dis[y][x] = dis[x][y];
                }
                updata(dis[i1][i2],dis[i1][x]+dis[y][i2]+z);
                if (dis[i1][i2]!=dis[i2][i1]){
                    dis[i2][i1] = dis[i1][i2];
                }

            }
        cout<<ans<<" ";
    }
    return 0;
}

标签:题意,int,25C,ll,Codeforces,long,i1,ans,Roads
来源: https://www.cnblogs.com/AWCXV/p/10705745.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有