#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
void * wmem;
char memarr[ 96000000 ] ;
template < class T> inline void walloc1d( T ** arr, int x, void ** mem = & wmem) {
static int skip[ 16 ] = { 0 , 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 } ;
( * mem) = ( void * ) ( ( ( char * ) ( * mem) ) + skip[ ( ( unsigned long long ) ( * mem) ) & 15 ] ) ;
( * arr) = ( T* ) ( * mem) ;
( * mem) = ( ( * arr) + x) ;
}
struct graph{
int N;
int * es;
int ** edge;
void setEdgeRootedTree( int N__, int M, int A[ ] , int B[ ] , int root= 0 , int reorder= 0 , int cnv[ ] = NULL , void ** mem = & wmem) {
int i;
int j;
int k;
int * dist;
int * q;
int qs;
int qe;
int * ind;
void * tmem;
N = N__;
tmem = ( ( char * ) ( * mem) ) + ( sizeof ( int ) * N + 15 ) + ( sizeof ( int * ) * N + 15 ) + ( sizeof ( int ) * M + 15 * N) ;
walloc1d( & es, N, mem) ;
walloc1d( & edge, N, mem) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
es[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( M) ; i++ ) {
es[ A[ i] ] ++ ;
es[ B[ i] ] ++ ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
walloc1d( & edge[ i] , es[ i] , & tmem) ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
es[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( M) ; i++ ) {
edge[ A[ i] ] [ es[ A[ i] ] ++ ] = B[ i] ;
edge[ B[ i] ] [ es[ B[ i] ] ++ ] = A[ i] ;
}
walloc1d( & dist, N, & tmem) ;
walloc1d( & q, N, & tmem) ;
walloc1d( & ind, N, & tmem) ;
if ( cnv== NULL ) {
walloc1d( & cnv, N, & tmem) ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
dist[ i] = - 1 ;
}
dist[ root] = 0 ;
qs = qe = 0 ;
q[ qe++ ] = root;
while ( qs < qe) {
i = q[ qs++ ] ;
for ( j= ( 0 ) ; j< ( es[ i] ) ; j++ ) {
k = edge[ i] [ j] ;
if ( dist[ k] == - 1 ) {
dist[ k] = dist[ i] + 1 ;
q[ qe++ ] = k;
}
}
}
if ( reorder == 0 ) {
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
cnv[ i] = i;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
ind[ i] = i;
}
}
else {
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
cnv[ i] = q[ i] ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
ind[ cnv[ i] ] = i;
}
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
es[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( M) ; i++ ) {
j = A[ i] ;
k = B[ i] ;
if ( dist[ j] > dist[ k] ) {
swap( j, k) ;
}
es[ ind[ j] ] ++ ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
walloc1d( & edge[ i] , es[ i] , mem) ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
es[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( M) ; i++ ) {
j = A[ i] ;
k = B[ i] ;
if ( dist[ j] > dist[ k] ) {
swap( j, k) ;
}
j = ind[ j] ;
k = ind[ k] ;
edge[ j] [ es[ j] ++ ] = k;
}
}
}
;
#define main dummy_main
int main( ) {
wmem = memarr;
return 0 ;
}
#undef main
int M;
int A[ 100 ] ;
int B[ 100 ] ;
graph g;
double dp[ 100 ] ;
double nx[ 100 ] ;
class Solution{
public :
double frogPosition( int N, vector< vector< int >> & edges, int t, int target) {
int FmcKpFmN, i;
dummy_main( ) ;
M = edges.size ( ) ;
for ( i= ( 0 ) ; i< ( M) ; i++ ) {
{
auto Q5VJL1cS = ( edges[ i] [ 0 ] - 1 ) ;
auto e98WHCEY = ( edges[ i] [ 1 ] - 1 ) ;
A[ i] = Q5VJL1cS;
B[ i] = e98WHCEY;
}
}
g.setEdgeRootedTree ( N,M,A,B) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
dp[ i] = 0 ;
}
dp[ 0 ] = 1 ;
for ( FmcKpFmN= ( 0 ) ; FmcKpFmN< ( t) ; FmcKpFmN++ ) {
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
nx[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
if ( g.es [ i] == 0 ) {
nx[ i] + = dp[ i] ;
}
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
int V9aVTaxx;
for ( V9aVTaxx= ( 0 ) ; V9aVTaxx< ( g.es [ i] ) ; V9aVTaxx++ ) {
auto & j = g.edge [ i] [ V9aVTaxx] ;
nx[ j] + = dp[ i] / g.es [ i] ;
}
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
dp[ i] = nx[ i] ;
}
}
return dp[ target- 1 ] ;
}
}
;
// cLay varsion 20200325-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int M, A[100], B[100];
// graph g;
// double dp[100], nx[100];
//
// class Solution {
// public:
// double frogPosition(int N, vector<vector<int>>& edges, int t, int target) {
// dummy_main();
// M = edges.size();
// rep(i,M) (A[i], B[i]) = (edges[i][0]-1, edges[i][1]-1);
// g.setEdgeRootedTree(N,M,A,B);
//
// rep(i,N) dp[i] = 0;
// dp[0] = 1;
// rep(t){
// rep(i,N) nx[i] = 0;
// rep(i,N) if(g.es[i]==0) nx[i] += dp[i];
// rep(i,N) rep[g.edge[i]](j,g.es[i]) nx[j] += dp[i] / g.es[i];
// rep(i,N) dp[i] = nx[i];
// }
// return dp[target-1];
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgKndtZW07CmNoYXIgbWVtYXJyWzk2MDAwMDAwXTsKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgd2FsbG9jMWQoVCAqKmFyciwgaW50IHgsIHZvaWQgKiptZW0gPSAmd21lbSl7CiAgc3RhdGljIGludCBza2lwWzE2XSA9IHswLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxfTsKICAoKm1lbSkgPSAodm9pZCopKCAoKGNoYXIqKSgqbWVtKSkgKyBza2lwWygodW5zaWduZWQgbG9uZyBsb25nKSgqbWVtKSkgJiAxNV0gKTsKICAoKmFycik9KFQqKSgqbWVtKTsKICAoKm1lbSk9KCgqYXJyKSt4KTsKfQpzdHJ1Y3QgZ3JhcGh7CiAgaW50IE47CiAgaW50ICplczsKICBpbnQgKiplZGdlOwogIHZvaWQgc2V0RWRnZVJvb3RlZFRyZWUoaW50IE5fXywgaW50IE0sIGludCBBW10sIGludCBCW10sIGludCByb290PTAsIGludCByZW9yZGVyPTAsIGludCBjbnZbXSA9IE5VTEwsIHZvaWQgKiptZW0gPSAmd21lbSl7CiAgICBpbnQgaTsKICAgIGludCBqOwogICAgaW50IGs7CiAgICBpbnQgKmRpc3Q7CiAgICBpbnQgKnE7CiAgICBpbnQgcXM7CiAgICBpbnQgcWU7CiAgICBpbnQgKmluZDsKICAgIHZvaWQgKnRtZW07CiAgICBOID0gTl9fOwogICAgdG1lbSA9ICgoY2hhciopKCptZW0pKSArIChzaXplb2YoaW50KSAqIE4gKyAxNSkgKyAoc2l6ZW9mKGludCopICogTiArIDE1KSArIChzaXplb2YoaW50KSAqIE0gKyAxNSAqIE4pOwogICAgd2FsbG9jMWQoJmVzLCBOLCBtZW0pOwogICAgd2FsbG9jMWQoJmVkZ2UsIE4sIG1lbSk7CiAgICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgICAgZXNbaV0gPSAwOwogICAgfQogICAgZm9yKGk9KDApO2k8KE0pO2krKyl7CiAgICAgIGVzW0FbaV1dKys7CiAgICAgIGVzW0JbaV1dKys7CiAgICB9CiAgICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgICAgd2FsbG9jMWQoJmVkZ2VbaV0sIGVzW2ldLCAmdG1lbSk7CiAgICB9CiAgICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgICAgZXNbaV0gPSAwOwogICAgfQogICAgZm9yKGk9KDApO2k8KE0pO2krKyl7CiAgICAgIGVkZ2VbQVtpXV1bZXNbQVtpXV0rK10gPSBCW2ldOwogICAgICBlZGdlW0JbaV1dW2VzW0JbaV1dKytdID0gQVtpXTsKICAgIH0KICAgIHdhbGxvYzFkKCZkaXN0LCBOLCAmdG1lbSk7CiAgICB3YWxsb2MxZCgmcSwgTiwgJnRtZW0pOwogICAgd2FsbG9jMWQoJmluZCwgTiwgJnRtZW0pOwogICAgaWYoY252PT1OVUxMKXsKICAgICAgd2FsbG9jMWQoJmNudiwgTiwgJnRtZW0pOwogICAgfQogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIGRpc3RbaV0gPSAtMTsKICAgIH0KICAgIGRpc3Rbcm9vdF0gPSAwOwogICAgcXMgPSBxZSA9IDA7CiAgICBxW3FlKytdID0gcm9vdDsKICAgIHdoaWxlKHFzIDwgcWUpewogICAgICBpID0gcVtxcysrXTsKICAgICAgZm9yKGo9KDApO2o8KGVzW2ldKTtqKyspewogICAgICAgIGsgPSBlZGdlW2ldW2pdOwogICAgICAgIGlmKGRpc3Rba109PS0xKXsKICAgICAgICAgIGRpc3Rba10gPSBkaXN0W2ldICsgMTsKICAgICAgICAgIHFbcWUrK10gPSBrOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgaWYocmVvcmRlciA9PSAwKXsKICAgICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgICAgY252W2ldID0gaTsKICAgICAgfQogICAgICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgICAgICBpbmRbaV0gPSBpOwogICAgICB9CiAgICB9CiAgICBlbHNlewogICAgICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgICAgICBjbnZbaV0gPSBxW2ldOwogICAgICB9CiAgICAgIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgICAgIGluZFtjbnZbaV1dID0gaTsKICAgICAgfQogICAgfQogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIGVzW2ldID0gMDsKICAgIH0KICAgIGZvcihpPSgwKTtpPChNKTtpKyspewogICAgICBqID0gQVtpXTsKICAgICAgayA9IEJbaV07CiAgICAgIGlmKGRpc3Rbal0gPiBkaXN0W2tdKXsKICAgICAgICBzd2FwKGosIGspOwogICAgICB9CiAgICAgIGVzW2luZFtqXV0rKzsKICAgIH0KICAgIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgICB3YWxsb2MxZCgmZWRnZVtpXSwgZXNbaV0sIG1lbSk7CiAgICB9CiAgICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgICAgZXNbaV0gPSAwOwogICAgfQogICAgZm9yKGk9KDApO2k8KE0pO2krKyl7CiAgICAgIGogPSBBW2ldOwogICAgICBrID0gQltpXTsKICAgICAgaWYoZGlzdFtqXSA+IGRpc3Rba10pewogICAgICAgIHN3YXAoaiwgayk7CiAgICAgIH0KICAgICAgaiA9IGluZFtqXTsKICAgICAgayA9IGluZFtrXTsKICAgICAgZWRnZVtqXVtlc1tqXSsrXSA9IGs7CiAgICB9CiAgfQp9CjsKI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICB3bWVtID0gbWVtYXJyOwogIHJldHVybiAwOwp9CiN1bmRlZiBtYWluCmludCBNOwppbnQgQVsxMDBdOwppbnQgQlsxMDBdOwpncmFwaCBnOwpkb3VibGUgZHBbMTAwXTsKZG91YmxlIG54WzEwMF07CmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICBkb3VibGUgZnJvZ1Bvc2l0aW9uKGludCBOLCB2ZWN0b3I8dmVjdG9yPGludD4+JiBlZGdlcywgaW50IHQsIGludCB0YXJnZXQpewogICAgaW50IEZtY0twRm1OLCBpOwogICAgZHVtbXlfbWFpbigpOwogICAgTSA9IGVkZ2VzLnNpemUoKTsKICAgIGZvcihpPSgwKTtpPChNKTtpKyspewogICAgICB7CiAgICAgICAgYXV0byBRNVZKTDFjUyA9IChlZGdlc1tpXVswXS0xKTsKICAgICAgICBhdXRvIGU5OFdIQ0VZID0gKCBlZGdlc1tpXVsxXS0xKTsKICAgICAgICBBW2ldID0gUTVWSkwxY1M7CiAgICAgICAgQltpXSA9IGU5OFdIQ0VZOwogICAgICB9CiAgICB9CiAgICBnLnNldEVkZ2VSb290ZWRUcmVlKE4sTSxBLEIpOwogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIGRwW2ldID0gMDsKICAgIH0KICAgIGRwWzBdID0gMTsKICAgIGZvcihGbWNLcEZtTj0oMCk7Rm1jS3BGbU48KHQpO0ZtY0twRm1OKyspewogICAgICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgICAgICBueFtpXSA9IDA7CiAgICAgIH0KICAgICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgICAgaWYoZy5lc1tpXT09MCl7CiAgICAgICAgICBueFtpXSArPSBkcFtpXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgICAgaW50IFY5YVZUYXh4OwogICAgICAgIGZvcihWOWFWVGF4eD0oMCk7VjlhVlRheHg8KGcuZXNbaV0pO1Y5YVZUYXh4KyspewogICAgICAgICAgYXV0byAmaiA9IGcuZWRnZVtpXVtWOWFWVGF4eF07CiAgICAgICAgICBueFtqXSArPSBkcFtpXSAvIGcuZXNbaV07CiAgICAgICAgfQogICAgICB9CiAgICAgIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgICAgIGRwW2ldID0gbnhbaV07CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBkcFt0YXJnZXQtMV07CiAgfQp9CjsKLy8gY0xheSB2YXJzaW9uIDIwMjAwMzI1LTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gaW50IE0sIEFbMTAwXSwgQlsxMDBdOwovLyBncmFwaCBnOwovLyBkb3VibGUgZHBbMTAwXSwgbnhbMTAwXTsKLy8gCi8vIGNsYXNzIFNvbHV0aW9uIHsKLy8gcHVibGljOgovLyAgIGRvdWJsZSBmcm9nUG9zaXRpb24oaW50IE4sIHZlY3Rvcjx2ZWN0b3I8aW50Pj4mIGVkZ2VzLCBpbnQgdCwgaW50IHRhcmdldCkgewovLyAgICAgZHVtbXlfbWFpbigpOwovLyAgICAgTSA9IGVkZ2VzLnNpemUoKTsKLy8gICAgIHJlcChpLE0pIChBW2ldLCBCW2ldKSA9IChlZGdlc1tpXVswXS0xLCBlZGdlc1tpXVsxXS0xKTsKLy8gICAgIGcuc2V0RWRnZVJvb3RlZFRyZWUoTixNLEEsQik7Ci8vIAovLyAgICAgcmVwKGksTikgZHBbaV0gPSAwOwovLyAgICAgZHBbMF0gPSAxOwovLyAgICAgcmVwKHQpewovLyAgICAgICByZXAoaSxOKSBueFtpXSA9IDA7Ci8vICAgICAgIHJlcChpLE4pIGlmKGcuZXNbaV09PTApIG54W2ldICs9IGRwW2ldOwovLyAgICAgICByZXAoaSxOKSByZXBbZy5lZGdlW2ldXShqLGcuZXNbaV0pIG54W2pdICs9IGRwW2ldIC8gZy5lc1tpXTsKLy8gICAgICAgcmVwKGksTikgZHBbaV0gPSBueFtpXTsKLy8gICAgIH0KLy8gICAgIHJldHVybiBkcFt0YXJnZXQtMV07Ci8vICAgfQovLyB9Owo=