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

    Description

    Input

    Output

    输出文件包括n 行,每行一个实数,精确到小数点后3 位。第i 行的实数表 示结点i 在社交网络中的重要程度。

    Sample Input

    4 4
    1 2 1
    2 3 1
    3 4 1
    4 1 1

    Sample Output

    1.000
    1.000
    1.000
    1.000

    HINT


    为1


     
    看到数据范围,显然Floyd
    map[i][j]表示i-->j的最短路,a[i][j]表示表示从i到j最短路的方案数,在改变最短路时该数组清零
     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 const int N=110,inf=1000000000;
     5 double a[N][N];
     6 int n,m,u,v;
     7 double ans[N],map[N][N],w;
     8 int main(){
     9     scanf("%d%d",&n,&m);
    10     for(int i=1;i<=n;i++)
    11         for(int j=1;j<=n;j++) map[i][j]=(inf+0.0);
    12     for(int i=1;i<=m;i++){
    13         scanf("%d%d%lf",&u,&v,&w);
    14         map[u][v]=map[v][u]=(w+0.0);
    15         a[u][v]=a[v][u]=1;
    16     }
    17     for(int k=1;k<=n;k++)
    18         for(int i=1;i<=n;i++)
    19             for(int j=1;j<=n;j++){
    20                 if (map[i][j]>map[i][k]+map[k][j])map[i][j]=map[i][k]+map[k][j],a[i][j]=0;;
    21                 if (map[i][j]==(map[i][k]+map[k][j])) a[i][j]+=a[i][k]*a[k][j]; 
    22             }
    23      for(int i=1;i<=n;i++)a[i][i]=0;
    24     for(int k=1;k<=n;k++)
    25         for(int i=1;i<=n;i++)
    26             for(int j=1;j<=n;j++){
    27                 if (map[i][j]==(map[i][k]+map[k][j])&&a[i][j]>0)
    28                 ans[k]+=a[i][k]*a[k][j]/(a[i][j]+0.0); 
    29             }
    30     for(int i=1;i<=n;i++) printf("%.3lf
    ",ans[i]);      
    31 }
  • 相关阅读:
    sql: update from
    sql: 查询,select
    english: 遭遇
    sql: sybase与oracle中insert into select和select into的用法
    lcd参数解释及刷新率计算,LCD时序
    Camera Binning Mode
    页框分配器【转】
    (一)洞悉linux下的Netfilter&iptables:什么是Netfilter?
    网络中的NAT模式
    组播、单播、多播
  • 原文地址:https://www.cnblogs.com/wuminyan/p/5202605.html
Copyright © 2011-2022 走看看