• [BZOJ 1491] [NOI 2007] 社交网络


    好吧先不吐槽这道题的题目是一部介绍facebook的电影……

    1491: [NOI2007]社交网络

    Time Limit: 10 Sec  Memory Limit: 64 MB
    Submit: 1010  Solved: 584
    [Submit][Status][Discuss]

    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




    【题解】

    首先,这肯定是最短路问题。
    看到n<=100,又要求所有点对间的最短路,想到用floyd。
    在floyd的时候加上计数即可。
    注意:这个计数要应用乘法原理、加法原理;
    最后根据I的公式推导出重要程度。
    时间复杂度:O(2*n^3+n),即O(n^3),在n=100极限数据并不会爆
    贴上代码咯
    值得注意的是,这题需要判一下自环,我之前把ans数组设成int了,导致我全部输出0.000 TAT 以后写代码要注意了,不然会浪费挺多时间的。
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int MAXN=100+20,INF=20000001;
     4 double a[MAXN][MAXN];
     5 double mapx[MAXN][MAXN],ans[MAXN];
     6 int n,m;
     7 int main() {
     8     scanf("%d%d",&n,&m);
     9     for (int i=1;i<=n;++i)
    10         for (int j=1;j<=n;++j) mapx[i][j]=mapx[j][i]=INF;
    11     for (int i=1;i<=m;++i) {
    12         int f,t; double w;
    13         scanf("%d%d%lf",&f,&t,&w);
    14         mapx[f][t]=mapx[t][f]=w;
    15         a[f][t]=a[t][f]=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(mapx[i][k]+mapx[k][j]<mapx[i][j]) {
    21                     mapx[i][j]=mapx[i][k]+mapx[k][j];
    22                     a[i][j]=a[i][k]*a[k][j];
    23                 }
    24                 else if(mapx[i][k]+mapx[k][j]==mapx[i][j]) a[i][j]+=a[i][k]*a[k][j];
    25             }
    26 
    27     for (int i=1;i<=n;++i) a[i][i]=0;
    28     for (int k=1;k<=n;++k)
    29         for (int i=1;i<=n;++i)
    30             for (int j=1;j<=n;++j)
    31                 if(mapx[i][j]==mapx[i][k]+mapx[k][j] && a[i][j]>0) ans[k]+=a[i][k]*a[k][j]/a[i][j];
    32     for (int i=1;i<=n;++i)
    33         printf("%.3lf
    ",ans[i]);
    34     return 0;                
    35 }
    View Code

    好了其实这题并不难,黄学长他们的题解看上去就比我先进多了

    orzhzw,orzzld。

    这是我在BZOJ AC的除A+B外的第一题,以此纪念。 2015/5/24

     
     
    这篇文章由TonyFang发布。 所有解释权归TonyFang所有。 Mailto: tony-fang@map-le.net
  • 相关阅读:
    Shiro学习
    【工具】流程图软件
    使用python快速搭建web服务器
    接口并发测试
    什么是REST编程
    Linux下查看cpu使用率
    中文价格识别为数字 java代码
    mysql mvcc 的理解
    Nacos client 客户端cpu占用100% 问题排查和解决方案
    springboot 不停服动态更新定时任务时间(转)
  • 原文地址:https://www.cnblogs.com/TonyNeal/p/bzoj1491.html
Copyright © 2020-2023  润新知