AcalaSwap contains multiple liquidity pools each of which is made up of two different tokens e.g. Token A-B pool and Token B-C pool. Users can swap any token to any other token in a single transaction provided there is a path between them e.g. even if there's no Token A-C pool, users can still swap Token A for Token C, given they have a common path via Token B.