#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef pair P; #define MOD 1000000007 // 10^9 + 7 #define INF 1000000000 // 10^9 #define LLINF 1LL<<60 double dis(int a, int b, int x, int y) { return sqrt(double((a - x)*(a - x) + (b - y)*(b - y))); } int main() { cin.tie(0); ios::sync_with_stdio(false); int H, W; cin >> H >> W; vector

V; for (int i = 1; i <= H; i++) { for (int j = 1; j <= W; j++) { char tmp; cin >> tmp; if (tmp == '1') V.push_back(P(i, j)); } } double ans = INF; // j==0 for (int i = 1; i <= H; i++) { double sum = 0; for (int k = 0; k < V.size(); k++) sum += dis(i, 0, V[k].first, V[k].second); ans = min(ans, sum); } // j == W+1 for (int i = 1; i <= H; i++) { double sum = 0; for (int k = 0; k < V.size(); k++) sum += dis(i, W+1, V[k].first, V[k].second); ans = min(ans, sum); } // i == 0 for (int j = 1; j <= W; j++) { double sum = 0; for (int k = 0; k < V.size(); k++) sum += dis(0, j, V[k].first, V[k].second); ans = min(ans, sum); } // i == H+1 for (int j = 1; j <= W; j++) { double sum = 0; for (int k = 0; k < V.size(); k++) sum += dis(H+1, j, V[k].first, V[k].second); ans = min(ans, sum); } cout << setprecision(15) << ans << endl; return 0; }