Note that it's guaranteed that the N-1 edges form a connected 'path' from pulley 1 to pulley N, so it suffices to count how many belts are cross belts. This number gives a measure of how many times the rotation direction is 'inverted'. If this number is odd, the Nth pulley is rotating counterclockwise, otherwise, it's rotating clockwise.
Below is Rob Kolstad's solution:
#include <stdio.h> #include <stdlib.h> main () { FILE *fin = fopen ("rotation.in", "r"); FILE *fout = fopen ("rotation.out", "w"); int n, i, s, d, c; int flip = 0; fscanf (fin, "%d", &n); for (i = 0; i < n-1; i++) { fscanf (fin, "%d %d %d", &s, &d, &c); flip ^= c; } fprintf (fout, "%d\n", flip); exit (0); }