{"openapi":"3.1.0","info":{"title":"Floyd–Warshall Visualizer","description":"Step through the Floyd–Warshall all-pairs shortest path algorithm on your own weighted graph, watching the distance and predecessor matrices update for each intermediate node.","version":"1.0"},"servers":[{"url":"https://dabbled.ai"}],"paths":{"/apps/floyd-warshall-visualizer":{"get":{"operationId":"floydWarshallVisualizer","summary":"Step through the Floyd–Warshall all-pairs shortest path algorithm on your own weighted graph, watching the distance and predecessor matrices update for each intermediate node.","parameters":[{"name":"node_count","in":"query","required":false,"description":"Number of nodes (2–10)","schema":{"type":"number"}},{"name":"directed","in":"query","required":false,"description":"Treat graph as directed","schema":{"type":"boolean"}},{"name":"granularity","in":"query","required":false,"description":"Animation granularity","schema":{"type":"string","enum":["per-k","per-(i,j)"]}},{"name":"speed_ms","in":"query","required":false,"description":"Auto-play delay in milliseconds (50–2000)","schema":{"type":"number"}},{"name":"density","in":"query","required":false,"description":"Random graph edge density (0–1)","schema":{"type":"number"}},{"name":"weight_min","in":"query","required":false,"description":"Random weight minimum","schema":{"type":"number"}},{"name":"weight_max","in":"query","required":false,"description":"Random weight maximum","schema":{"type":"number"}},{"name":"allow_negatives","in":"query","required":false,"description":"Allow negative random weights","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Rendered app reflecting the given inputs."}}}}}}