#include <iostream> #include <iomanip> #include <algorithm> #include <vector> #include <string> #include <cmath> #include <memory.h> #include <sstream> #include <stack> #include <fstream> #include <cstdio> #include <unordered_map> #include <map> #include <list> #include <stdlib.h> #include <queue> #include <set> using namespace std; int n; int p[100001]; double pr[100001]; int col[100001]; double ex; void dfs(int i) { if (col[i] == 2) return; if (col[i] == 1) { int cur = i; double mul = 1; do { mul *= pr[cur]; cur = p[cur]; } while (cur != i); ex += mul; col[i] = 2; return; } col[i] = 1; dfs(p[i]); col[i] = 2; } int main() { cin>>n; ex = 0; for(int i = 0; i < n; i++) { double x; cin>>p[i]>>x; p[i]--; pr[i] = x / 100.0; } memset(col, -1, sizeof(col)); for (int i = 0; i < n; i++) { dfs(i); } cout<<fixed<<setprecision(2)<<ex<<endl; }