Aeroplane chess
code
#include<bits/stdc++.h>
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define ACM_LOCAL
using namespace std;
typedef long long ll;
const double PI = acos(-1);
const double eps = 1e-4;
const int MOD = 1e9 + 7;
const int M = 1e3 + 10;
const int N = 1e6 + 10;
int n, m;
int x, y;
double dp[N];
int fly[N];
void solve() {
for(int i = 1; i <= m; ++ i) {
cin >> x >> y;
fly[x] = y;
}
for(int i = n; i >= 0; -- i) {
dp[i] = 0;
for(int j = 1; j <= 6; ++ j) {
if(i + j >= n) {
dp[i] += dp[n] / 6.0;
} else {
dp[i] += dp[i + j] / 6.0;
}
}
dp[i] ++;
if(fly[i] != -1) dp[i] = dp[fly[i]];
}
cout << fixed << setprecision(4) << dp[0] - 1 << endl;
}
int main() {
IO;
#ifdef ACM_LOCAL
freopen("input", "r", stdin);
freopen("output", "w", stdout);
#endif
int o = 1, cases = 0;
while(o --) {
while(cin >> n >> m) {
memset(fly, -1, sizeof(int) * (n + 1));
if(n + m) solve();
else break;
}
}
return 0;
}