title: How can I learn algorithms for programming contests?
body: <p>What are the best ways to learn algorithms for programming contests such as USACO. I need to start learning algorithms as I have just gotten into the silver division. Are there any good books or tutorials to learn algorithms and techniques such as Dijkstra's, Dynamic Programming, Flood-fill, etc. in Java and actually be able to know how to implement them for problems? Thanks a lot for the help!</p>