hm. say, you have a connedted undirected graph, and you would like to reason about cycles in it.
here's a nifty tool for that: pick any spanning tree. note down all the edges *not* in the spanning tree. every cycle has to go through *at least* one of those edges, since a (spanning) tree does not contain any cycles as a subgraph. i like to call these "pumps", after the pumping lemmas.
(additional notes: each pump defines a "primitive cycle", by taking the pump edge and connecting the two endpoints via the unique path within the spanning tree. every cycle in the graph corresponds to an edge XOR of a unique set of primitive cycles, though not every edge XOR of primitive cycles gives you a cycles exact condition exercise to the reader)
now some questions to y'all: what is the, uh, literature terminology for this trick? is there some neat way to extend this to digraphs (where the spanning tree becomes a "spanning DAG")?