zoukankan      html  css  js  c++  java
  • 【HDU4035】Maze

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #include <iostream>
     5 #include <vector>
     6 #include <cmath>
     7 
     8 using namespace std;
     9 const int maxn=10000+100;
    10 int T,n;
    11 double E[maxn],K[maxn],A[maxn],B[maxn],C[maxn];
    12 vector<int>G[maxn];
    13 bool dfs(int u,int fa){
    14      double temp=0;
    15      if(G[u].size()==1&&fa!=-1){
    16          A[u]=K[u];
    17          B[u]=1-K[u]-E[u];
    18          C[u]=1-K[u]-E[u];
    19          return true;
    20      }
    21      A[u]=K[u];
    22      B[u]=(1-K[u]-E[u])/G[u].size();
    23      C[u]=1-K[u]-E[u];
    24     for(int i=0;i<G[u].size();i++){
    25         int v=G[u][i];
    26         if(v!=fa){
    27             if(!dfs(v,u))return false;
    28             A[u]+=A[v]*(1-K[u]-E[u])/G[u].size();
    29             C[u]+=(1-K[u]-E[u])/G[u].size()*C[v];
    30             temp+=B[v]*(1-K[u]-E[u])/G[u].size();
    31         }
    32     }
    33     if(fabs(1-temp)<=1e-10)return false;
    34     A[u]/=(1-temp);
    35     B[u]/=(1-temp);
    36     C[u]/=(1-temp);
    37     return true;
    38 }
    39 int main(){
    40     scanf("%d",&T);
    41     for(int t=1;t<=T;t++){
    42         memset(A,0,sizeof(A));
    43         memset(B,0,sizeof(B));
    44         memset(C,0,sizeof(C));
    45         scanf("%d",&n);
    46         for(int i=1;i<=n;i++)G[i].clear();
    47         int x,y;
    48         for(int i=1;i<n;i++){
    49             scanf("%d%d",&x,&y);
    50             G[x].push_back(y);
    51             G[y].push_back(x);
    52         }
    53         for(int i=1;i<=n;i++){
    54             scanf("%lf%lf",&K[i],&E[i]);
    55             K[i]/=100,E[i]/=100;
    56         }
    57         printf("Case %d: ",t);
    58         if(!dfs(1,-1)||(1-A[1])<=1e-10){
    59             printf("impossible
    ");
    60             continue;
    61         }
    62        /* for(int i=1;i<=n;i++){
    63             cout<<i<<" "<<C[i]<<endl;
    64         }*/
    65         printf("%.6f
    ",C[1]/(1-A[1]));
    66     }
    67 return 0;
    68 }
    View Code
  • 相关阅读:
    Flash 全局安全性设置面板
    响应式布局的一个例子mark
    移动平台WEB前端开发技巧汇总
    自定义事件机制——观察者模式
    学习之响应式Web设计:Media Queries和Viewports
    常用栅格布局方案
    观察者模式的一个例子
    二进制文件转换为文本工具
    C#面向对象名词比较(二)
    MSN消息提示类
  • 原文地址:https://www.cnblogs.com/LQLlulu/p/9097888.html
Copyright © 2011-2022 走看看