A USACO (USA Computing Olympiad) possui um site de treinamento gratuito para quem deseja participar das olimpíadas de computação americanas.
http://ace.delos.com/usacogate
A idéia do site é show!!!
Inicialmente, é liberado um exercício de programação. Se você resolver, outros três são liberados e assim por diante. É como se passasse de fase.
Agora, vem a pergunta?? Como eles corrigem seus exercícios?
A entrada e a saída de cada programa é por arquivo e cada problema tem sua formatação específica para ambos. Quando acreditar na sua resolução você envia seu código e este será compilado e executado no servidor deles. São realizados 10 testes sobre seu algoritmo. Se algum teste falhar é mostrado na sua tela a falha e o exercício não é considerado correto.
Se tudo der certo eles liberam a solução deles, tipicamente em C.
As linguagens de programação permitadas são: Java, C/C++ e Pascal.
Abaixo, segue um
screenshot da minha página. Como vocês podem ver eu não entro a um tempo e fiz poucos problemas, hehehehe.
Os exercícios são difíceis e podem tomar algumas horas.
Agora, decidi retoma-los.

Veja o que eles mesmo dizem sobre os problemas que apresentam para resolver:
"Hal Burch conducted an analysis over spring break of 1999 and made an amazing discovery: there are only 16 types of programming contest problems! Furthermore, the top several comprise almost 80% of the problems seen at the IOI. Here they are:
Dynamic Programming
Greedy
Complete Search
Flood Fill
Shortest Path
Recursive Search Techniques
Minimum Spanning Tree
Knapsack
Computational Geometry
Network Flow
Eulerian Path
Two-Dimensional Convex Hull
BigNums
Heuristic Search
Approximate Search
Ad Hoc Problems
The most challenging problems are Combination Problems which involve a loop (combinations, subsets, etc.) around one of the above algorithms - or even a loop of one algorithm with another inside it. These seem extraordinarily tricky to get right, even though conceptually they are ``obvious''.
If you can master solving just 40% of these problem types, you can almost guarantee a silver medal at the IOI. Mastering 80% moves you into the gold range almost for sure. Of course, `mastery' is a tough nut to crack! We'll be supplying a plethora of problems so that you can hone your skills in the quest for international fame."
O interessante é que desses 16 tipos problemas, especificamente 5 são de grafos:
- Shortest path (Caminho mais curto)
- Mininum Spanning Tree (Árvore Mínima de Espalhamento),
- Network Flow (Fluxo de rede de trabalho)
- Eulerian Path (Caminho Euleriano)