BZOJ 1143 [CTSC 2008] 祭祀 (二分图匹配,最小相交路径覆盖)
2015-03-14 14:10
357 查看
题目链接:BZOJ 1143
这道题我查了好久错啊,最后才发现读入边的时候讲M打成N了QAQ。
总结了一些二分图匹配的知识:
1.最大匹配 == 最小点覆盖 == 总点数-最大点独立集
2.最小不相交路径覆盖 == 原图总点数-新图最大匹配
3.最小相交路径覆盖 => 先用floyd求传递闭包 => 最小不相交路径覆盖
这道题我查了好久错啊,最后才发现读入边的时候讲M打成N了QAQ。
总结了一些二分图匹配的知识:
1.最大匹配 == 最小点覆盖 == 总点数-最大点独立集
2.最小不相交路径覆盖 == 原图总点数-新图最大匹配
3.最小相交路径覆盖 => 先用floyd求传递闭包 => 最小不相交路径覆盖
#include<cstdio> #include<cstring> #include<iostream> using namespace std; #define maxn (210) int N,M; int belong[maxn],map[maxn][maxn]; bool vis[maxn]; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } bool find(int x){ for(int i=1;i<=N;i++){ if(map[x][i] && !vis[i]){ vis[i]=1; if(belong[i]==-1||find(belong[i])){ belong[i]=x; return true; } } } return false; } void floyd(){ for(int k=1;k<=N;k++) for(int i=1;i<=N;i++) if(map[i][k]) for(int j=1;j<=N;j++) if(map[k][j]) map[i][j]=1; } int main(){ memset(belong,-1,sizeof(belong)); N=read(); M=read(); for(int i=1;i<=M;i++){ int a=read(),b=read(); map[a][b]=1; } floyd(); int ans=N; for(int i=1;i<=N;i++){ memset(vis,0,sizeof(vis)); if(find(i))ans--; } printf("%d\n",ans); return 0; }
相关文章推荐
- 【Floyd】【Dilworth定理】【最小路径覆盖】【匈牙利算法】bzoj1143 [CTSC2008]祭祀river
- bzoj 1143 [CTSC2008]祭祀river(最小链覆盖)
- 【bzoj1143】[CTSC2008]祭祀river Floyd+网络流最小割
- BZOJ1143 [CTSC2008]祭祀river 【二分图匹配】
- 2718: [Violet 4]毕业旅行/1143: [CTSC2008]祭祀river 最长反链=最小边覆盖
- BZOJ1143 [CTSC2008]祭祀river 【二分图匹配】
- BZOJ 1143 [CTSC2008]祭祀river(二分图匹配)
- Bzoj 2718: [Violet 4]毕业旅行 && Bzoj 1143: [CTSC2008]祭祀river 传递闭包,二分图匹配,匈牙利,bitset
- bzoj 1143: [CTSC2008]祭祀river / 2718: [Violet 4]毕业旅行 -- 二分图匹配
- [BZOJ1143][CTSC2008]祭祀river(floyed+二分图匹配)
- [BZOJ1143][CTSC2008]祭祀river(Dilworth定理+二分图匹配)
- 【bzoj1143 CTSC2008】祭祀river(最大独立集--二分图匹配)
- [BZOJ]1143: [CTSC2008]祭祀river 二分图匹配
- [BZOJ1143]CTSC2008祭祀|最长反链|floyd|二分图匹配
- bzoj1143: [CTSC2008]祭祀river 二分图匹配
- 【bzoj1143】 CTSC2008祭祀river 二分图匹配
- [BZOJ1143] CTSC2008 祭祀river floyed+二分图匹配
- bzoj1143: [CTSC2008]祭祀river(二分图匹配)
- 【BZOJ1143】[CTSC2008]祭祀river【最长反链】【传递闭包】
- [图论训练]1143: [CTSC2008]祭祀river 二分图匹配