• tyvj1423(所有点对之间的最短路)


    GF和猫咪的玩具

    描述 Description
    GF同学和猫咪得到了一个特别的玩具,这个玩具由n个金属环(编号为1---n),和m条绳索组成,每条绳索连接两个不同的金属环,并且长度相同。GF左手拿起金属环L,猫咪右手(或者说:爪)拿起金属环R(L不等于R),然后尽量的向两边拉,他希望选择合适的L和R,使得被拉紧的绳索尽量的多。 

    注:如果像样例那样1-2-4-3-5-6-1构成了一个环,我们认为拉1和3时只能拉紧一边(1-2-4-3或3-5-6-1)而不算全部拉紧。通俗地说,也就是当两个环之间有几个绳索数相等的连接方法时,只算其中一条连接方法拉紧,不算全部拉紧。
     
    输入格式 InputFormat
    第一行包含两个正整数n,m
    接下来的m行包含两个正整数a,b,表示有一条绳索连接了a和b的绳索。
    n<=100
     
    输出格式 OutputFormat
    仅包含一个整数,表示最多能拉紧的绳索数。
     
    样例输入 SampleInput [复制数据]

    6 6
    1 2
    1 6
    2 4
    6 5
    4 3
    5 3

    样例输出 SampleOutput [复制数据]

    3

    拉紧的绳子数量等价于求所有点对之间路径上最少点数

    最后找最大值即可

    直接floyd

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    using namespace std;
    
    const int maxn=110;
    const int nil=(0x7f7f7f7f)/2;
    
    int a[maxn][maxn];
    
    int main(){
        int n,m;
        int x,y;
        scanf("%d%d",&n,&m);
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++) a[i][j]=nil;
        for (int i=1;i<=m;i++){
            scanf("%d%d",&x,&y);
            a[x][y]=1;
            a[y][x]=1;
        }
        for (int k=1;k<=n;k++){
            for (int i=1;i<=n;i++){
                for (int j=1;j<=n;j++){
                        if(i!=j&&i!=k&&j!=k)
                    a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
                }
            }
        }
        int ans=-nil;
        for (int i=1;i<=n;i++){
            for (int j=1;j<=n;j++){
                if(i!=j&&a[i][j]<nil) ans=max(ans,a[i][j]);
            }
        }
        printf("%d",ans);
     return 0;
    }
  • 相关阅读:
    杭电2048--神、上帝以及老天爷
    杭电1012--u Calculate e
    杭电2049--不容易系列之(4)——考新郎
    杭电2045--不容易系列之(3)—— LELE的RPG难题
    Truncate Table user
    Sql server统计查询语句消耗时间
    C/C++:Unions 联合
    NYOJ 27 水池数目
    OpenRisc-39-ORPSoC,or1200的memory hierarchy整体分析
    RCP打包出来 运行 出现 JVM terminated.exit code = 13
  • 原文地址:https://www.cnblogs.com/lmjer/p/9343489.html
Copyright © 2020-2023  润新知