师范大学の矿山
师范大学の矿山 Time Limit: 1000/2000 MS (C++/Others) Memory Limit: 262144 /524288K (C++/Others) 题目描述 # 师范大学有一座矿山,因为改造江边学生公寓需要花费大量资金,所以现在让你负 责挖矿,你需要根据矿石(以下称石头)的属性来计算它能获得的最大利润。 每一块石头 有一个价值 和挖掘的成本 ,有些石头会阻挡其他石头,比如,如 果石头 被石头 和石头 挡住,那么必须先把石头 和石头 挖出来,才能挖石头 ,当一块石头没有被其他石头阻挡时,它就可以被挖出来。 输入描述 # 第一行一个整数 ,代表石头的数量,石头编号从 到 ,接下来 行描述这些 石头的属性。第 行代表石头 ,首先是两个数 和 代表价值和成本,然后第三 个数 表示石头 阻挡的石头数量,最后是 个数 表示石头 阻挡的那些石头的 编号。 输入保证有合理的挖掘顺序来挖掘每一块石头,所有石头的 之和不会超过500。 输出描述 #1<=N<=200,0<=vi,ci<=200,0<=mi<=N-1 输出一个整数代表挖掘这些石头能获取的最大利润。 输入 5 0 3 2 2 3 1 3 2 4 5 4 8 1 4 5 3 0 9 2 0 输出 2 题解:先把所有能获利 的点都加起来,再建图(从源点到获利的点连边,权值为获利值,把赔钱的点到汇点连边