First, you need to allow for 1 hop path with [:FLIGHT*1..5] otherwise, the path made of just the direct flight will never be matched.
Avoiding cycle means avoiding any node to be several times in the path, so you can use apoc.coll.toSet that returns only unique elements of a list and filter path when the unique list of nodes in the path equals the list of nodes in the path
MATCH path = (a:AIRPORT {IATA: 'LAX'})-[:FLIGHT*1..5]->(n:AIRPORT {IATA: 'LAS'}) where apoc.coll.toSet(nodes(path))=nodes(path) RETURN [ x in nodes(path)|x.IATA ]
["LAX", "LAS"]
Alternatively, you can also sort paths by length and get the shortest MATCH path = (a:AIRPORT {IATA: 'LAX'})-[:FLIGHT*1..5]->(n:AIRPORT {IATA: 'LAS'}) with path,length(path) as len order by len limit 1 RETURN [ x in nodes(path)|x.IATA ]
["LAX", "LAS"]