99.挖地雷(未结题)

problem 6挖地雷
http://www.luogu.org/problem/show?pid=2196
【问题描述】
   在一个地图上有N个地窖(N<=200,每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。
【输入格式】
输入文件mine.in有若干行。
1行只有一个数字,表示地窖的个数N
2行有N个数,分别表示每个地窖中的地雷个数。
3行至第N+1行表示地窖之间的连接情况:
3行有n-1个数(01),表示第一个地窖至第2个、第3个、、第n个地窖有否路径连接。如第3行为1 1 0 0 0 0,则表示第1个地窖至第2个地窖有路径,至第3个地窖有路径,至第4个地窖、第5个、、第n个地窖没有路径。
4行有n-2个数,表示第二个地窖至第3个、第4个、、第n个地窖有否路径连接。

n+1行有1个数,表示第n-1个地窖至第n个地窖有否路径连接。(为0
     表示没有路径,为1表示有路径)。
【输出格式】:
输出文件wdl.out有两行数据。
第一行表示挖得最多地雷时的挖地雷的顺序,各地窖序号间以一个空格
      分隔,不得有多余的空格。
第二行只有一个数,表示能挖到的最多地雷数。
思路:
一:DP写:DP思路: 
f[i]为挖到i时的最大收益
f[i]可以通过能够到达i的所有j转移过来
于是我们得到方程
f[i]=max(f[j]+a[i],f[i]);
二:有向无环图DAG图的跑法:
   因为边没有权值,所以把这个边的起点的地雷数目,付给这条边,最后再建一个点,把没有出度的点的地雷数付给这条边,spfa跑全局最长路(给每个点设置一个标志),取出最大的元素

原文地址:https://www.cnblogs.com/c1299401227/p/5370715.html