zoukankan      html  css  js  c++  java
  • BZOJ 1491 [NOI2007]社交网络

    暴力。 跑 floyd一边算最短路一边统计条数,然后暴力问一遍每个点。

    //Twenty
    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<queue>
    #include<vector>
    using namespace std;
    const int maxn=4500*2+299;
    int x,y,n,m;
    typedef long long LL;
    LL dis[105][105],f[105][105],z;
    double ans[105];
    int main() {
        scanf("%d%d",&n,&m);
        memset(dis,127/3,sizeof(dis));
        for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) f[i][j]=1;
        for(int i=1;i<=m;i++) {
            scanf("%d%d%lld",&x,&y,&z);
            dis[x][y]=dis[y][x]=min(dis[x][y],z);
            f[x][y]=f[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) {
                        if(dis[i][j]>dis[i][k]+dis[k][j]) {
                            dis[i][j]=dis[i][k]+dis[k][j];
                            f[i][j]=f[i][k]*f[k][j];
                        }
                        else if(dis[i][j]==dis[i][k]+dis[k][j]) {
                             f[i][j]+=f[i][k]*f[k][j];
                        }
                    }
        for(int i=1;i<=n;i++) {
            for(int j=1;j<=n;j++)
                for(int k=1;k<=n;k++) 
                if(i!=j&&i!=k&&k!=j) {
                   if(dis[i][j]+dis[i][k]==dis[j][k]) 
                       ans[i]+=(double)f[i][j]*f[i][k]/(double)f[j][k];
                }
        }
        for(int i=1;i<=n;i++)
         printf("%.3lf
    ",ans[i]);
        return 0;
    }
    View Code
  • 相关阅读:
    find 命令
    shell 脚本 测试webApp
    thinkphp模板继承
    Tp-validate进阶thinkphp
    B2B、B2C、C2C、O2O
    phpstorm自定义代码片段
    phpstorm开启xdebug断点调试,断点调试不成功来这里
    app接口设计
    socket
    字符集转换
  • 原文地址:https://www.cnblogs.com/Achenchen/p/7517814.html
Copyright © 2011-2022 走看看