Inspiration
Current exam center allocation systems often rely on naive randomization or simple radius checks, leading to suboptimal outcomes. We identified critical failures in existing systems: failing to assign centers within reachable graph components, ignoring accessibility needs for PwD candidates, and inefficient route planning. We wanted to engineer a system that guarantees 100% assignment rates and mathematical fairness using high-performance graph algorithms.
What it does
Test Centre Allotment Platform is a high-performance dispatch system that assigns students to centers using a Tiered Greedy Allotment strategy.
- Tiered Priority: It processes candidates in strict priority order: Male → PwD → Female.
- Smart Allotment: Instead of simple distance checks, it uses a custom allocation engine that respects center capacity while minimizing travel time.
- Real-Time Path Visualization: It instantly visualizes the precise street-level route (using A*) for any assigned student, calculating actual travel time based on road speeds rather than just Haversine distance.
How we built it
The system is built on a C++17 backend for raw performance, coupled with a React/Leaflet frontend.
- Graph Construction: We parse OpenStreetMap data into a weighted Adjacency List where edge weights represent travel time.
- Spatial Indexing: We implemented a KD-Tree (2D Binary Space Partitioning) to perform $O(\log n)$ nearest-neighbor searches, snapping students to the nearest valid road node.
- Component-Awareness: We use Disjoint Set Union (DSU) to identify connected components in the road network. This ensures students and centers are only matched if they are in the same reachable subgraph.
- Caching: A smart caching system validates OSM data bounds, allowing for sub-100ms load times on repeat runs.
Challenges we ran into
- Graph Connectivity: Initial tests had a ~50% failure rate because students were snapped to isolated road segments (islands) that couldn't reach any center. We solved this by implementing Component-Aware Snapping, forcing all entities to snap to the main connected component. This improved our assignment rate to 100%.
- Latency at Scale: Calculating thousands of Dijkstra paths in the browser caused timeouts (>20s). We moved this to the C++ backend and implemented Pre-computed Dijkstra with parent tracking, reducing path visualization time to <100ms.
Accomplishments that we're proud of
- Optimization: Reduced allotment time from ~1000ms to ~87ms using our C++ engine.
- Reliability: Achieved a 100% assignment success rate (up from 50%).
- Data Handling: Successfully ingesting 6,400 Nodes and 50,000+ Edges directly from the Overpass API with highly optimized parsing.
What we learned
- Systems Integration: How to bridge a high-performance C++ backend with a modern web frontend using
cpp-httplib. - Graph Theory in Practice: The critical importance of verifying graph connectivity (Connected Components) before running pathfinding algorithms on real-world map data.
- Optimization Strategies: How pre-computation (Dijkstra parent pointers) can turn a 20-second lag into a real-time interaction.
What's next for Test Centre Allotment Platform
- Parallelization: Implementing multi-threading for the Dijkstra pre-computation phase to handle state-level datasets.
- Advanced Constraints: Adding support for exam board rules and varying speed limits based on traffic data.
Log in or sign up for Devpost to join the conversation.