登 录
一个裸的二分图最大匹配。这两天看了下匹配,以前一直以为很难,看了看,发现不是很难,很多题难的地方在于建图。要多做题,多学学不同的建图方式。#include <stdio.h> #include <string.h> #define N 305 int map[N][90],pre[N]; bool used[N]; int n,m=85; bool dfs(int u) { int i; for(i=1;i<=m;i++) { if(!used[i]&&map[u][i]) { used[i]=1; if(pre[i]==-1||dfs(pre[i])) { pre[i]=u; return true; } } } return false; } int main() { while(scanf("%d",&n)==1) { int i; memset(map,0,sizeof(map)); memset(pre,-1,sizeof(pre)); for(i=1;i<=n;i++) { int t,a,b; scanf("%d",&t); while(t--) { scanf("%d%d",&a,&b); map[i][(a-1)*12+b]=1; } } int ans=0; for(i=1;i<=n;i++) { memset(used,0,sizeof(used)); if(dfs(i)) ans++; } printf("%d/n",ans); } return 0; }
抱歉!评论已关闭.