hdu 2063 二分图 水题 最多多少组合数
基础二分图应用,注意理解
#include <stdio.h> #include <string.h> int k,m,n,a[501][501]; int visit[501]; int linker[501]; int dfs( int u) { int i; //visit[u]=1; for (i=1;i<=n;i++) { if (a[u][i]&&!visit[i]) { visit[i]=1; if (linker[i]==-1||dfs(linker[i])) { linker[i]=u; return 1; } } } return 0; } int main() { int start,end,res,i; while (scanf( "%d" ,&k),k) { scanf( "%d%d" ,&m,&n); memset(a,0, sizeof (a)); for (i=1;i<=k;i++) { scanf( "%d%d" ,&start,&end); a[start][end]=1; } memset(linker,-1, sizeof (linker)); res=0; for (i=1;i<=m;i++) { memset(visit,0, sizeof (visit)); if (dfs(i)) res++; } printf( "%d\n" ,res); } return 0; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步