日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

总结 · 二分图匹配

發(fā)布時(shí)間:2024/10/12 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 总结 · 二分图匹配 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

感覺(jué)二分圖匹配的內(nèi)容很雜還很難理解。。。需要總結(jié)一下啊。。。。。

1.二分圖最大匹配:邊數(shù)最多的匹配叫做最大匹配。

算法:匈牙利算法O(V*E)

例題:BZOJ 1059 題解在這

1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #include<stack> 6 #include<queue> 7 #include<cstring> 8 #define PAU putchar(' ') 9 #define ENT putchar('\n') 10 #define MSE(a,b) memset(a,b,sizeof(a)) 11 #define REN(x) for(ted*e=fch[x];e;e=e->nxt) 12 #define REP(i,s,t) for(int i=s,__=t;i<=__;i++) 13 #define DWN(i,s,t) for(int i=s,__=t;i>=__;i--) 14 using namespace std; 15 const int maxn=200+10,maxm=40000+10; 16 int lnk[maxn];bool vis[maxn]; 17 struct ted{int x,y;ted*nxt;}adj[maxm],*fch[maxn],*ms=adj; 18 void add(int x,int y){*ms=(ted){x,y,fch[x]};fch[x]=ms++;return;}int n; 19 bool match(int x){ 20 REN(x){int v=e->y;if(!vis[v]){vis[v]=true; 21 if(!lnk[v]||match(lnk[v])){lnk[v]=x;return true;} 22 } 23 }return false; 24 } 25 bool hungary(){ 26 MSE(lnk,false);REP(i,1,n){MSE(vis,false);if(!match(i))return false;}return true; 27 } 28 inline int read(){ 29 int x=0;bool sig=true;char ch=getchar(); 30 for(;!isdigit(ch);ch=getchar())if(ch=='-')sig=false; 31 for(;isdigit(ch);ch=getchar())x=10*x+ch-'0';return sig?x:-x; 32 } 33 inline void write(int x){ 34 if(x==0){putchar('0');return;}if(x<0)putchar('-'),x=-x; 35 int len=0;static int buf[20];while(x)buf[len++]=x%10,x/=10; 36 for(int i=len-1;i>=0;i--)putchar(buf[i]+'0');return; 37 } 38 int T; 39 int main(){ 40 T=read();while(T--){ 41 MSE(fch,NULL);ms=adj; 42 n=read(); 43 REP(i,1,n)REP(j,1,n)if(read())add(i,j); 44 puts(hungary()?"Yes":"No"); 45 } 46 return 0; 47 } 匈牙利算法

2.二分圖最小點(diǎn)覆蓋:一個(gè)最小的點(diǎn)集V使得所有的邊總有一個(gè)端點(diǎn)屬于V,比如菊花圖的最小點(diǎn)覆蓋數(shù)是1

算法:最小點(diǎn)覆蓋=最大匹配

例題:HDU 1150 題解在這

3.二分圖最大獨(dú)立集:一個(gè)最大的點(diǎn)集V使得每?jī)牲c(diǎn)間都不存在邊,比如菊花圖的最大獨(dú)立集是n-1。

算法:最大獨(dú)立集=n-最大匹配

?

轉(zhuǎn)載于:https://www.cnblogs.com/chxer/p/4755818.html

總結(jié)

以上是生活随笔為你收集整理的总结 · 二分图匹配的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。