A graph is bipartite if its nodes split into two groups with every edge crossing between them — two colors, and no edge joins same colors. It models matchings (jobs to workers, students to schools), and it has a clean characterization: a graph is bipartite if and only if it has no odd-length cycle. You test it by 2-coloring with BFS — color the source, alternate colors outward, and if you ever try to give a node the color of a neighbor, an odd cycle exists and it is not bipartite. A 4-cycle (square) is bipartite; a triangle (3-cycle) is not — an odd loop cannot be two-colored.
The demo checks a square (an even 4-cycle, bipartite) and a triangle (an odd 3-cycle, not bipartite): live demo
“Any graph can be split into two sides.” — only if it has no odd cycle; a triangle cannot be two-colored. cited
Two colors laid across a graph with no clash — possible exactly when no loop has odd length. recognizer
On the canonical compiler, the square is a 4-edge even cycle (bipartite) and the triangle a 3-edge odd cycle (not):