zoukankan      html  css  js  c++  java
  • 华南师范大学·2012年ACM程序设计竞赛·决赛 1011

    构建概率矩阵,然后矩阵快速幂,直接输出答案。

     1 #include<cstdio>
     2 #include<vector>
     3 #include<cstring>
     4 using namespace std;
     5 int n,m,k;
     6 vector<int> g[201];
     7 struct matrix
     8 {
     9     float m[201][201];
    10     matrix(){memset(m,0,sizeof(m));}
    11     matrix operator *(const matrix &a)const
    12     {
    13         matrix tmp;
    14         for(int i=0;i<n;i++)
    15             for(int j=0;j<n;j++)
    16               for(int k=0;k<n;k++)
    17                 tmp.m[i][j]+=m[i][k]*a.m[k][j];
    18         return tmp;
    19     }
    20 };
    21 matrix posibility;
    22 matrix pow(matrix a,int n)
    23 {
    24     if(n==1) return a;
    25     if(n%2)
    26     {
    27         matrix tmp=pow(a,n/2);
    28         return tmp*tmp*a;
    29     }
    30     else
    31     {
    32         matrix tmp=pow(a,n/2);
    33         return tmp*tmp;
    34     }
    35 }
    36 int main()
    37 {
    38     int t;
    39     scanf("%d",&t);
    40     for(int CASE=1;CASE<=t;CASE++)
    41     {
    42         scanf("%d%d%d",&n,&m,&k);
    43         for(int i=0;i<n;i++)
    44             g[i].clear();
    45         while(m--)
    46         {
    47             int u,v;
    48             scanf("%d%d",&u,&v);
    49             u--;v--;
    50             g[u].push_back(v);
    51             g[v].push_back(u);
    52         }
    53         memset(posibility.m,0,sizeof(posibility.m));
    54         for(int i=0;i<n;i++)
    55         {
    56            double cnt=g[i].size();
    57            for(int j=0;j<cnt;j++)
    58            {
    59                int v=g[i][j];
    60                posibility.m[i][v]=1/cnt;
    61            }
    62         }
    63         matrix ans=pow(posibility,k);
    64         printf("Case #%d: %.4f
    ",CASE,ans.m[0][1]);
    65     }
    66     return 0;
    67 }
  • 相关阅读:
    01JAVA语言基础课后作业
    从命令行接收多个数字,求和之后输出结果
    java伪代码
    java从命令行接收多个数字,求和之后输出结果
    大道至简读后感
    大道至简读后感
    d3d两点
    codeforce 1A-1C
    计算几何里三角形的一些姿势,都忘干净了..
    c++ template 5.x 学习总结
  • 原文地址:https://www.cnblogs.com/sooflow/p/3272683.html
Copyright © 2011-2022 走看看