算法模板——二分图匹配
实现功能为二分图匹配
原理:匈牙利算法,核心思想——匹配上了就配,没直接匹配上也要通过前面的腾出位置让这个匹配上(详见:趣写算法系列之——匈牙利算法)
本程序以Codevs2776为例
1 type 2 point=^node; 3 node=record 4 g:longint; 5 next:point; 6 end; 7 var 8 i,j,k,l,m,n:longint; 9 c,f:array[0..1000] of longint; 10 a:array[0..1000] of point; 11 procedure add(x,y:longint);inline; 12 var p:point; 13 begin 14 new(p); 15 p^.g:=y; 16 p^.next:=a[x]; 17 a[x]:=p; 18 end; 19 function check(x:longint):boolean;inline; 20 var p:point; 21 begin 22 p:=a[x]; 23 while p<>nil do 24 begin 25 if f[p^.g]<>i then 26 begin 27 f[p^.g]:=i; 28 if c[p^.g]=0 then 29 begin 30 c[p^.g]:=x; 31 exit(true); 32 end 33 else if check(c[p^.g]) then 34 begin 35 c[p^.g]:=x; 36 exit(true); 37 end; 38 end; 39 p:=p^.next; 40 end; 41 exit(false); 42 end; 43 44 {$IFDEF WINDOWS}{$R wiki2776.rc}{$ENDIF} 45 46 begin 47 readln(n,m); 48 for i:=1 to n do 49 begin 50 a[i]:=nil; 51 while not(eoln) do 52 begin 53 read(j); 54 if j=0 then break; 55 add(i,j); 56 end; 57 readln; 58 end; 59 fillchar(c,sizeof(c),0); 60 fillchar(f,sizeof(f),0);l:=0; 61 for i:=1 to n do 62 if check(i) then inc(l); 63 writeln(l); 64 readln; 65 end. 66
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)