| 22 | int n, m; |
| 23 | |
| 24 | void add(int u, int v) { |
| 25 | Edge e; |
| 26 | e.u = u; e.v = v; |
| 27 | float dx = surface.V(u, 0) - surface.V(v, 0); |
| 28 | float dy = surface.V(u, 1) - surface.V(v, 1); |
| 29 | float dz = surface.V(u, 2) - surface.V(v, 2); |
| 30 | e.l = sqrt(dx * dx + dy * dy + dz * dz); |
| 31 | e.n = head[u]; |
| 32 | head[u] = edges.size(); |
| 33 | edges.push_back(e); |
| 34 | } |
| 35 | |
| 36 | void spfa(int st) { |
| 37 | std::queue<int> Q; |