grep+ found these files to match your search:
p10841.cpp: //medium, graphs, shortest path p856.cpp: //medium, decryption, cryptography, vigenere, weird, bad p10243.cpp: //hard, graphs, dp, minimum vertex cover in a tree, good p753.cpp: //multiple input, hard, graphs, maximum flow p11503.cpp: //medium, graphs, union-find, classic p11506.cpp: //hard, graphs, max flow, min cut p10807.cpp: //hard, graphs, backtracking, minimum spanning tree p10486.cpp: //medium, graphs, prim's, good p10543.cpp: // medium, graphs, all-pairs shortest path, floyd-warshall, adjacency matrix powers p563.cpp: //hard, escape problem, maximum flow, graphs, efficiency p11175.cpp: //hard, graphs, directed line graph recognition p786.cpp: //hard, graphs, bellman-ford, negative weight cycles, UNSOLVED: Reading input takes over 2 seconds p523.cpp: //multiple input, hard, graphs, all pairs shortest path, floyd-warshall with path recovery, good p10806.cpp: //hard, graphs, minimum cost maximum flow, min cost max flow p10621.cpp: //hard, graphs, shortest path, minimum spanning tree, minimization, good, UNSOLVED: TLE p11508.cpp: //medium, math, permutations, graphs, good p10507.cpp: //medium, graphs, simulation p10681.cpp: //medium, graphs, adjacency matrix powers, dp p11049.cpp: //medium, graphs, grids, single-source shortest path, path recovery p924.cpp: //medium, graphs, bfs, shortest path, good, excellent, gotcha p840.cpp: //easy, graphs, cycle detection, dfs, bfs, bad p615.cpp: //medium, graphs, is directed tree p828.cpp: //easy, encryption, decryption, cryptography, sneaky, good p10171.cpp: //medium, graphs, shortest path, dijkstra, bellman-ford, good p11065.cpp: //hard, brute force, backtracking, branch-and-bound, graphs, maximal independent sets, bitmasks p10354.cpp: //medium, graphs, shortest path, floyd-warshall, all vertices belonging to any shortest path, good, excellent p10052.cpp: //medium, graphs, greedy, bfs, dfs, 4-colouring, 4-colourability, colours, bad, judge is wrong, UNSOLVED: NP-hard with n=300 !!?!? p925.cpp: //medium, graphs, transitive closure, floyd-warshall, greedy, sorting, stl, good p186.cpp: //medium, graphs, shortest path with path recovery p726.cpp: //easy, cryptography, cryptanalysis, frequency analysys, misc, good, useful p487.cpp: //multiple input, medium, graphs, good dfs, enumerating all paths, memoization p10369.cpp: //medium, graphs, mst, minimum spanning tree, kruskal, good, excellent p10480.cpp: //hard, graphs, maximum flow, minimum cut, classic, good p610.cpp: //medium, graphs, dfs, undirected to directed, good p10389.cpp: //hard, graphs, shortest path, dijkstra, good, excellent p10731.cpp: //medium, graphs, simulation, sorting, floyd-warshall, transitive closure, UNSOLVED: WA. I hate Gordon's problems. What the fuck does he want?! p11594.cpp: //hard, graphs, all pairs maximum flow, max flow, gomory-hu trees p10594.cpp: //hard, graphs, min cost max flow, minimum cost maximum flow, good p534.cpp: //medium, graphs, mst, kruskal's, shortest path, dijkstra, classic, good, excellent p383.cpp: //medium, bfs, graphs p298.cpp: //easy, graphs, bfs, shortest path p388.cpp: //medium, bfs, graphs p10199.cpp: //medium, graphs, critical vertices, union-find, good, excellent p11518.cpp: //easy, graphs, flood fill, dfs, bfs p302.cpp: //medium, graphs, euler path, input, good p10097.cpp: //medium, graphs, bfs, shortest path p10802.cpp: //medium, graphs, dfs, lex smallest drive p11183.cpp: //hard, very hard, graphs, minimum weight arborescence p10099.cpp: //medium, graphs, mst, minimum spanning tree, prim, kruskal, good, excellent p157.cpp: //medium, graphs, shortest path, dijkstra p10129.cpp: //easy, graphs, euler path existence p718.cpp: //hard, math, number theory, graphs, diophantine equations, bfs, dfs, connectivity, good p11721.cpp: //hard, very hard, graphs, negative-weight cycles, bellman-ford, optimization, UNSOLVED: TLE p908.cpp: //medium, graphs, mst, minimum spanning tree, dfs, bad p10603.cpp: //medium, graphs, shortest path, dijkstra, good p10720.cpp: //hard, math, graphs, combinatorics, graphic sequence, good, UNSOLVED: just doing Erdos-Gallai... should be right. p11060.cpp: //medium, graphs, transitive closure, floyd-warshall, sorting, tricky, good, excellent p208.cpp: //hard, graphs, dfs, lex path listing, backtracking, pruning, good, excellent p10822.cpp: //medium, graphs, dfs, greedy, adjacency list p10729.cpp: //hard, graphs, tree isomorphism, UNSOLVED: WA. I don't understand something. p10000.cpp: //medium, modified bfs, graphs, bfs, longest path p10342.cpp: //hard, graphs, second shortest path, dijkstra p117.cpp: //medium, graphs, shortest path, dijkstra, bellman-ford, euler tour, euler path, dominoes, good, excellent, tricky p314.cpp: //medium, graphs, bfs, shortest path p10356.cpp: //medium, graphs, shortest path, shortest even-length path, dijkstra, good p11045.cpp: //medium, graphs, bipartite matching p10845.cpp: //hard, ridiculously hard, graphs, maximum flow, backtracking, branch and bound, UNSOLVED: Rodrigo's brute force problem :-0 p10213.cpp: //hard, math, combinatorics, recurrence, big int, geometry, complete graph embeddings p677.cpp: //easy, graphs, k-paths, false matrix powers, forgetting dfs, good p10047.cpp: //medium, graphs, bfs, shortest path, maze, good p10113.cpp: //medium, graphs, math, number theory, reachability, floyd-warshall, gcd, rational p11418.cpp: //medium, graphs, bipartite matching p11090.cpp: //hard, graphs, shortest path, dp, binary search, good, gotcha p614.cpp: //medium, graphs, maze, dfs, simulation, pretty output, good p10072.cpp: //hard, graphs, weighted bipartite matching, hungarian algorithm p11586.cpp: //easy, graphs, eulerian cycle p10818.cpp: //hard, graphs, dp, shortest path, hamiltonian path, traveling salesman p10685.cpp: //medium, graphs, union-find, connected components, bad description p10610.cpp: //medium, graphs, shortest path, mst, kruskal's, bfs, doubles, input, getline, good, excellent p10187.cpp: //medium, bfs, graphs, shortest path, tricky p10308.cpp: //medium, graphs, trees, recursive, longest path in a tree, classic, good p558.cpp: //medium, graphs, shortest path, cycle detection, dfs p10510.cpp: //medium, graphs, cactus, strongly connected, cycles, dfs, good, excellent p10075.cpp: //medium, graphs, geometry, all-pairs shortest path, floyd-warshall, geodesic distance, great circle, good p10803.cpp: //easy, graphs, all-pairs shortest path, floyd-warshall p274.cpp: //easy, graphs, bfs, dfs, flood fill p775.cpp: //easy, graphs, backtracking, hamiltonian path p10091.cpp: //medium, math, dp, graphs, probability, bad, gotcha, UNSOLVED: "It's total bullshit." Ozzy Osbourne p393.cpp: //hard, graphs, shortest path, geometry, line segment intersection p10062.cpp: //easy, cryptography, cryptanalysis, frequency analysis, maps, sorting p670.cpp: //multiple input, hard, graph, bipartite matching p11414.cpp: //medium, graphs, graphic sequence, degree sequence, classic p345.cpp: //medium, graphs, resistors, resistance, resistor networks, iterativie, good p539.cpp: //medium, graphs, brute force, backtracking, longest path p10746.cpp: //hard, graphs, weighted matching, maximum weighted bipartite matching, hungarian algorithm, min cost max flow, minimum cost maximum flow, good p627.cpp: //medium, graphs, shortest path, floyd-warshall, bfs p10461.cpp: //medium, graphs, bfs, dfs, flood fill, transitive closure p1001.cpp: //medium, graphs, shortest path, geometry, sphere intersection p11082.cpp: //medium, graphs, maximum flow, matrix row and column sums, bad, confusing, the problem setter lies p10030.cpp: //multiple input, medium, graphs, bipartite graphs, misc, guessing game, good, excellent, awesome! p10122.cpp: //hard, graphs, geometry, binary search, bipartite matching, bpm, UNSOLVED: wah-wah! p280.cpp: //easy, graphs, floyd-warshall, bfs, dfs p10009.cpp: //multiple input, medium, graphs, shortest path, floyd-warshall, careful reading, good p10596.cpp: //easy, graphs, union-find, euler path p11080.cpp: //medium, graphs, bfs, dfs, bipartite graphs p910.cpp: //easy, dp, graphs p626.cpp: //medium, graphs, brute force, tricky, all 3-cycles p439.cpp: //medium, graphs, bfs p10581.cpp: //medium, math, dp, partitions, lexicographic, recursive p10808.cpp: //hard, gaussian elimination, linear system, big int, rational, graphs, resistors, UNSOLVED: MLE p10457.cpp: //hard, graphs, mst, bfs, binary search p10331.cpp: //medium, graphs, all-pairs shortest path, floyd-warshall p685.cpp: //medium, graphs, weird all-pairs shortest path, edge-graph, floyd-warshall p10102.cpp: //easy, graphs, bfs, multiple-source shortest paths, good p988.cpp: //easy, graphs, number of paths in a dag, memoization p315.cpp: //medium, graph, dfs with a trick p140.cpp: //medium, graphs, permutation, brute force, bandwidth, speed p10801.cpp: //medium, graphs, single-source shortest path, bellman-ford, dijkstra p200.cpp: // medium, graph, transitive closure, trick p796.cpp: //medium, graphs, dfs, bridge detection, good, excellent p560.cpp: //medium, number theory, strings, graphs, bfs, big int, brute force, simulation p11733.cpp: //medium, graphs, mst, minimum spanning tree, kruskal's p10436.cpp: //medium, graphs, shortest path, dijkstra p452.cpp: //medium, graphs, topological sort, dp, efficiency, crazy input p658.cpp: //medium, graphs, shortest path, dijkstra, bitmasks, good, excellent p10259.cpp: //medium, dp, graphs, topological sort, bfs, dfs, careful reading, good, excellent p599.cpp: //medium, graphs, flood fill, bfs, dfs, connected components p11553.cpp: //easy, graphs, weighted matching, hungarian, brute force p10067.cpp: //medium, graphs, bfs, shortest path, implicit graph p10552.cpp: //easy, datastructure, graphs, ancestors, genealogy, UNSOLVED: WA p11748.cpp: //easy, graphs, bfs, elections, good, excellent p818.cpp: //medium, graphs, union-find, brute force, reconnecting chains p11710.cpp: //medium, graphs, mst, minimum spanning tree p821.cpp: //medium, graphs, shortest path, floyd-warshall p10583.cpp: //medium, graph, union-find, good p10462.cpp: //medium, graphs, mst, minimum spanning tree, second mst p173.cpp: //easy, parsing, graphs, simulation, bad, UNSOLVED: another fucked up graph-based simulation p850.cpp: //easy, strings, decryption, cryptography p629.cpp: //medium, misc, graphs, union-find, interesting, weird p929.cpp: //hard, very hard, graphs, shortest path, bucket dijkstra's, efficiency, ridiculous input p10178.cpp: //easy, math, graphs, euler's formula, union-find, gotcha, tricky, nasty, good, excellent p10330.cpp: //hard, graphs, maximum flow, ford-fulkerson, good p436.cpp: //medium, graphs, negative weight cycles, Floyd-Warshall p10459.cpp: //hard, graphs, trees, dfs, tree diameter, best tree root, worst tree root, good, UNSOLVED: TLE with a linear-time algorithm on n=5000 p334.cpp: //medium, graphs, transitive closure, floyd-warshall, bad p10203.cpp: //easy, graphs, tricky, short, good, excellent p820.cpp: //hard, graphs, maximum flow, good, excellent p10850.cpp: //easy, simulation, graphs p10793.cpp: //medium, graphs, all-pairs shortest path, floyd-warshall p193.cpp: //medium, graphs, maximum independent set, heuristics, backtracking p762.cpp: //easy, graphs, bfs, shortest path, good, excellent, neat gotcha p259.cpp: //hard, graphs, bipartite matching p10048.cpp: //medium, graphs, mst, minimum spanning tree, union-find, good, excellent p10702.cpp: //medium, graphs, shortest path of a given length, matrix multiplication, dp, good p10779.cpp: //hard, graphs, maximum flow, tricky, good, excellent p11770.cpp: //medium, graphs, scc, arborescence, strongly connected components p168.cpp: //medium, graphs, input, simulation, gotcha, bad p10034.cpp: //medium, graphs, mst, minimum spanning tree, union-find, kruskal's, prim's, good p721.cpp: //hard, graphs, cactus, shortest path, dijkstra, efficiency, good, UNSOLVED: everything is too slow p10816.cpp: //hard, graphs, shortest path, spanning trees, mst, binary search, good, excellent p10843.cpp: //medium, math, graphs, combinatorics p11095.cpp: //hard, graphs, vertex cover, split-and-merge, bidirectional search, dp, good, excellent p10004.cpp: //easy, graphs, dfs p10397.cpp: //medium, graphs, mst, kruskal's, good p11097.cpp: //medium, graphs, DP, shortest path p10301.cpp: //easy, graphs, union-find, bfs, dfs, geometry, largest connected component p10592.cpp: //easy, graphs, flood fill, dfs, bfs, image p544.cpp: //medium, graphs, one-path maximum flow, modified kruskal p816.cpp: //hard, graphs, bfs, shortest path, UNSOLVED: "You're shittin' me... Tell me you're shittin' me... You better be shittin' me!", Samantha Bee p601.cpp: //easy, graphs, dfs, path game, memoization, dp p247.cpp: //medium, graphs, scc, strongly connected components, floyd-warshall, transitive closure p318.cpp: //medium, graphs, dijkstra p604.cpp: //easy, boggle, set, sort, io, input, graphs, dfs p11600.cpp: //hard, dp, graphs, probability p767.cpp: //multiple input, easy, graphs, bfs, shortest path p10805.cpp: //hard, graphs, minimum diameter spanning tree p10842.cpp: //medium, graphs, bottleneck spanning tree, minimum spanning tree p10246.cpp: //hard, graphs, all pairs shortest path, dijkstra, strange, original, good, excellent p10092.cpp: //hard, graphs, bipartite matching, maximum flow p11047.cpp: //medium, graphs, all-pairs shortest path, floyd-warshall, path recovery, input, getline, bad p11550.cpp: //easy, trivial, graph theory p532.cpp: //easy, bfs, graphs, maze, labyrinth, single-source shortest path p567.cpp: //easy, shortest path, floyd-warshall, graphs, all pairs shortest path, unweighted p459.cpp: //multiple input, easy, graphs, trivial, dfs p10863.cpp: //hard, graphs, steiner tree, brute force, bfs, spanning tree, careful reading p423.cpp: //medium, graphs, bfs, single-source shortest path, bellman-ford, dijkstra p10993.cpp: //hard, math, number theory, graphs, bfs p10054.cpp: //medium, graphs, euler cycle, good, excellent p125.cpp: //hard, graphs, bfs, floyd-warshall, number of paths, good, excellent p536.cpp: //medium, graphs, trees, binary tree reconstruction, good, excellent p10080.cpp: //hard, graphs, bipartite matching, maximum flow p795.cpp: //easy, cryptography, io, sandorf's cypher p10735.cpp: //hard, graphs, euler cycle, maximum flow, classic, good, excellent p10044.cpp: //medium, io, scanf, graphs, bfs, erdos numbers p10804.cpp: //hard, graphs, bipartite matching, binary search p869.cpp: //easy, graphs, connectivity, floyd-warshall, transitive closure p10471.cpp: //medium, graphs, trees, recursive, recursion, math, good p590.cpp: //medium, graphs, dp, shortest path of a given length, matrix multiplication, good, excellent p11603.cpp: //hard, graphs, all pairs maximum flow, max flow, mst, minimum spanning tree, bottleneck tree p10600.cpp: //medium, graphs, mst, kruskal's, 2 smallest spanning trees, good, excellent p593.cpp: //medium, graphs, simulation, networks, UNSOLVED: too damn slow p10724.cpp: //medium, graphs, all-pairs shortest path, floyd-warshall, good, excellent p10859.cpp: //hard, graphs, dp, minimum vertex cover on a tree p10150.cpp: //hard, graphs, bfs, shortest path, words, efficiency, UNSOLVED: too slow with strings p1010.cpp: //medium, graphs, shortest path, Dijkstra's
grep+ searches the database of Valladolid problems that I solved (or tried to). You can give it keywords like "dp", "graphs", "math", "brute force", etc. and it will give you a list of problem numbers that (in my opinion) match the keywords. The database contains 1408 problems.
Please ignore anything that appears after "UNSOLVED:". As you probably know, not being able to solve a problem after many attempts can be very frustrating.