void Solve() { //input H = io.Int; W = io.Int; c = new int[10, 10]; A = new int[H, W]; for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { c[i, j] = io.Int; } } for (int i = 0; i < H; ++i) { for (int j = 0; j < W; ++j) { A[i, j] = io.Int; } } //cal var wf = new WarshallFloyd(10, false); for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { wf.AddPath(i, j, c[i, j]); } } wf.Run(); var ans = 0L; for (int i = 0; i < H; ++i) { for (int j = 0; j < W; ++j) { if (A[i, j] != -1) { ans += wf.MinCost(A[i, j], 1); } } } //ret WriteLine(ans); }
void Solve() { io.i(out h, out w); io.ini(out c, 10, 10); io.ini(out a, h, w); var wf = new WarshallFloyd(10, false); c.Fun((i, j) => wf.AddPath(i, j, c[i, j])); wf.Run(); var score = 0L; a.Fun((i, j) => { if (a[i, j] != -1) { score += wf.MinCost(a[i, j], 1); } }); score.Prt(); }