Code jam vs kickstart vs acm icpc prep

Could someone tell me what are some of the common algorithms and data structures asked in each of code jam, kick start and acm icpc separately. I’ve heard that acm icpc requires you to know complex graph algorithms like maximum flow etc whereas code jam and kickstart usually ask ad hoc problems (tricky but not related to complex graph algorithms). I wanted to know how true this is?