#include <cstdlib> #include <cctype> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <iostream> #include <sstream> #include <map> #include <set> #include <queue> #include <stack> #include <fstream> #include <numeric> #include <iomanip> #include <bitset> #include <list> #include <stdexcept> #include <functional> #include <utility> #include <ctime> using namespace std; typedef long long LL; #define rep(it,s) for(__typeof((s).begin()) it=(s).begin();it!=(s).end();it++) int n; int nex[100010]; int p[100010]; int vis[100010], dep[100010]; double res = 0; void dfs(int u, int pre) { vis[u] = 1; if (pre==-1) dep[u] = 1; else dep[u] = dep[pre] + 1; if (vis[nex[u]]==1) { double tmp = 1; int q = u; while (nex[q]!=u) { tmp *= p[q] / 100.0; q = nex[q]; } tmp *= p[q] / 100.0; res += tmp; } else if (vis[nex[u]]==0) { dfs(nex[u], u); } vis[u] = 2; } int main() { //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); cin>>n; for (int i=0; i<n; i++) { scanf("%d%d", nex+i, p+i); nex[i]--; } for (int i=0; i<n; i++) if (!vis[i]) { dfs(i, -1); } int ans = int(round(res*100)+0.1); if (ans%100<10) printf("%d.0%d", ans/100, ans%100); else printf("%d.%d", ans/100, ans%100); return 0; }