【最小路径覆盖+注意】POJ 2594
2012-01-13 16:28
429 查看
这题要注意一点,题中说了You should notice that the roads of two different robots may contain some same point. 就是要注意这个细节/article/6002635.html ,要用一次传递闭包floyd找出所有通路
#include <map> #include <set> #include <list> #include <queue> #include <deque> #include <stack> #include <string> #include <cstdio> #include <math.h> #include <iomanip> #include <cstdlib> #include <limits.h> #include <string.h> #include <iostream> #include <fstream> #include <algorithm> using namespace std; #define LL long long #define MIN -99999999 #define MAX 99999999 #define pii pair<int ,int> #define bug cout<<"here!!"<<endl #define PI acos(-1.0) #define FRE freopen("input.txt","r",stdin) #define FF freopen("output.txt","w",stdout) #define eps 1e-8 #define N 505 bool g ; int match ; bool vis ; int n; void floyd(){ int i,j,k; for(k=1;k<=n;k++){ for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ if(g[i][k] && g[k][j]) g[i][j] = true; } } } } bool sear(int s){ int i; for(i=1;i<=n;i++){ if(g[i][s] && !vis[i]){ vis[i] = 1; if(match[i]==0 || sear(match[i])){ match[i] = s; return true; } } } return false; } int main(){ int m; while(scanf("%d%d",&n,&m) && (n+m)){ int i,j; memset(g,0,sizeof(g)); memset(match,0,sizeof(match)); while(m--){ int a,b; scanf("%d%d",&a,&b); g[a][b] = true; } int cnt = 0; floyd(); for(i=1;i<=n;i++){ memset(vis,0,sizeof(vis)); if(sear(i))cnt++; } printf("%d\n",n-cnt); } return 0; }
相关文章推荐
- POJ 2594 允许有相交点的最小路径覆盖
- poj 2594 Treasure Exploration(可重点最小路径覆盖)(二分匹配+Floyd求传递闭包)
- poj2594 Treasure Exploration 最小路径覆盖=顶点数-最大匹配数
- POJ-2594-Treasure Exploration-(路径相交的最小路径覆盖+闭包传递)
- Poj 2594 Treasure Exploration【可相交最小路径覆盖】
- poj2594——最小路径覆盖
- POJ 2594 Treasure Exploration (最小路径覆盖+传递闭包(解决可重点))
- poj2594-Treasure Exploration(最小路径覆盖,最大匹配,floyed(优化))
- POJ 2594 传递闭包的最小路径覆盖
- poj 2594 floyd+最小路径覆盖
- poj 2594 Treasure Exploration 最小路径覆盖/最大匹配
- poj 2594 Treasure Exploration 可重复覆盖的二分图最小覆盖路径
- POJ 2594 Treasure Exploration (最小路径覆盖+传递闭包(解决可重点))+传递闭包详解
- POJ 2594 最大二分匹配 最小路径覆盖
- poj2594 Treasure Exploration【最小路径覆盖】
- poj 2594-flody + 最小路径覆盖
- POJ 2594 Treasure Exploration(允许路径重叠的最小路径覆盖)
- POJ 2594 传递闭包+最小路径覆盖
- poj 2594 Treasure Exploration 【warshall 求传递闭包 + 最小路径覆盖】
- POJ-2594 Treasure Exploration 最小路径覆盖