Yes. CP SAT crunches through it in no time, but of course larger grids would quickly make it take much longer.
See
https://gist.github.com/Macuyiko/86299dc120478fdff529cab386f...
See
https://gist.github.com/Macuyiko/86299dc120478fdff529cab386f...
You can more precisely track flows and do maximization with ILP, but that often loses conflict-driven clause learning advantages.
Like the other comment suggested, running a loop where you keep adding constraints that eliminate invalid solutions will probably work for any puzzle that a human would want to solve.
Score: 7
~~~~~~
~····~
~·~~·~
.#..#.
......
..#...
.#H#..
..#...
However, I think that you do not need 'time' based variables in the form of reachable(x,y,t) = reachable(nx,ny,t-1)
Enforcing connectivity through single-commodity flows is IMO better to enforce flood fill (also introduces additional variables but is typically easier to solve with CP heuristics): Score: 2
~~~~~~
~....~
~.~~.~
......
......
..##..
.#H·#.
..##..
Cool puzzle!