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.
Share this project:

Updates

Submission history