链接:POJ - 2594 Treasure Exploration
题意:
给出一个含有 n ? ( 1 ≤ n ≤ 500 ) n\,(1\le n\le 500) n(1≤n≤500)个结点、 m ( 0 ≤ m ≤ 5000 ) m(0\le m\le 5000) m(0≤m≤5000)条边的有向无环图(DAG),机器人可以从任意点出发,问至少需要多少机器人,才能遍历图上所有点?(允许同一点同时存在多个机器人)
分析:
即求DAG上 最小可相交路径覆盖;
利用floyd算法,求出该图的传递闭包(若 i → j i\rarr j i→j可达,则连边 < i , j > <i,j> <i,j>),然后在传递闭包上求 最小不相交路径覆盖 即可。
- 最小不相交路径覆盖 = = =总点数 ? - ?对应二分图最大匹配
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
typedef