亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

LZOI-二分圖匹配例題

2019-11-10 17:35:49
字體:
來源:轉載
供稿:網友

以下題目都是我們學校內部學生自己出的或改編的題目哦!

LZOI2206 同桌匹配

題目描述:初二(15)由于班主任覺得一些男生成績太差,便安排他們班的某位無聊的班干做一件事。這位班干部需要給這些成績差的男生分配一些能給予他學習動力的女同桌。于是,現在有n名同學(n<=1000),并且其中的一些女生能給予某些男生學習動力?,F需要給這些男生配同桌,并且要求同桌數最大,請你輸出最大的同桌數。 輸入:第1行的2個數是n和m(m<=30000)。 接下來m行中,每行有2個正整數x和y,表示學號為x的男生與學號為y的女生可配為同桌。(數據保證任何一個x都不等于y) 輸出:將求得的最多同桌數。

解析

是一道二分圖匹配的模板題目。

代碼

#include<bits/stdc++.h>//最基本的模板 using namespace std;int n,m,x,y,g[1001][1001],linker[1001],res;bool used[1001];int dfs(int x){ for(int i=1;i<=n;i++) { if(used[i]==0 && g[x][i]) { used[i]=1; if(linker[i]==0 || dfs(linker[i])) { linker[i]=x; linker[x]=i; return 1; } } } return 0;}int main(){ cin>>n>>m; for(int i=1;i<=m;i++) { cin>>x>>y; g[x][y]=1; } for(int i=1;i<=n;i++)linker[i]=0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++)used[j]=0; if(dfs(i))res++; } cout<<res<<endl;}

LZOI2207 宿舍

據說該題改編自洛谷2055 宿舍 題目描述:六中在春晚后總算是放假了 · · · · · · 有些同學回家了,而有些同學則有以前的好朋友來探訪,那么住宿就是一個問題。比如 A 和 B 都是學校的學生,A 要回家,而 C 來看B,C 與 A 不認識。我們假設每個人只能睡和自己直接認識的人的床。(我就不信你敢睡你不認識的人的床)那么一個解決方案就是 B 睡 A 的床而 C 睡 B 的床。而實際情況可能非常復雜,有的人可能認識好多在校學生,在校學生之間也不一定都互相認識。我們已知一共有 n 個人,并且知道其中每個人是不是本校學生,也知道每個本校學生是否回家。問是否存在一個方案使得所有不回家的本校學生和來看他們的其他人都有地方住。 輸入:第一行一個數 T 表示數據組數。接下來 T 組數據,每組數據第一行一個數n 表示涉及到的總人數。接下來一行 n 個數,第 i 個數表示第 i 個人是否是在校學生 (0 表示不是,1 表示是)。再接下來一行 n 個數,第 i 個數表示第 i 個人是否回家 (0 表示不會家,1 表示回家,注意如果第 i 個人不是在校學生,那么這個位置上的數是一個隨機的數,你應該在讀入以后忽略它)。接下來 n 行每行 n 個數,第 i 行第 j 個數表示 i 和 j 是否認識 (1 表示認識,0 表示不認識,第 i 行 i 個的值為 0,但是顯然自己還是可以睡自己的床),認識的關系是相互的。 輸出:對于每組數據,如果存在一個方案則輸出 “ ^_^ ”(不含引號) 否則輸出“T_T”(不含引號)。(注意輸出的都是半角字符,即三個符號的 ASCII 碼分別為94,84,95)

解析

這道題其實是讓我們自己構建二分圖,然后再套用模板做就行了(但是還是做了我好久)。

代碼

#include<bits/stdc++.h>using namespace std;int T,n,g[111][111],zx[111],stu[111],bed[111],linker[111],used[111],ans;//zx表示學生是否在校,stu表示二分圖左邊的學生,bed表示二分圖右邊的床。 int dfs(int x){ for(int i=1;i<=bed[0];i++) if(!used[bed[i]]&&g[bed[i]][x]) { used[bed[i]]=1; if(!linker[bed[i]]||dfs(linker[bed[i]])) { linker[bed[i]]=x; return 1; } } return 0;}int main(){ cin>>T; while(T--) { memset(zx,0,sizeof(zx));//記得全部初始化 memset(stu,0,sizeof(stu)); memset(bed,0,sizeof(bed)); memset(linker,0,sizeof(linker)); memset(g,0,sizeof(g)); ans=0; cin>>n; for(int i=1;i<=n;i++) cin>>zx[i]; for(int i=1;i<=n;i++) { int x; cin>>x; if(zx[i])//如果是在校學生 { if(x)bed[++bed[0]]=i; //如果不留校,那么床位增加。 else stu[++stu[0]]=bed[++bed[0]]=i; //如果留校,那么床位和學生都增加 } else stu[++stu[0]]=i; //如果不是在校學生,那么學生增加(構建二分圖的過程) } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>g[i][j]; for(int i=1;i<=n;i++) if(zx[i])g[i][i]=1;//別忘了自己也可以睡自己的床 for(int i=1;i<=stu[0];i++)//又回到了模板題 { memset(used,0,sizeof(used)); if(dfs(stu[i]))ans++; } if(stu[0]>bed[0])ans=-1; //別忘了當床數小于學生數時,絕對無法完美匹配哦! if(ans==stu[0])cout<<"^_^"<<endl; else cout<<"T_T"<<endl; } return 0;}

LZOI2208 YZY的信封

據說改編自CODEVS1222 信與信封 題目描述:YZY先生晚上寫了n封信(qing shu),并相應地寫了n個信封將信裝好,準備寄出,給他的班(qing)主(yun)任(tong)。但是,第二天他的兒子Small YZY將這n封信都拿出了信封。不幸的是,Small YZY無法將拿出的信正確地裝回信封中了。將Small YZY所提供的n封信依次編號為1,2,…,n;且n個信封也依次編號為1,2,…,n。假定Small YZY能提供一組信息:第i封信肯定不是裝在信封j中。請編程幫助Small YZY,盡可能多地將信正確地裝回信封。 輸入:n文件的第一行是一個整數n(n≤100)。信和信封依次編號為1,2,…,n。n接下來的各行中每行有2個數i和j,表示第i封信肯定不是裝在第j個信封中。文件最后一行是2個0,表示結束。 輸出:輸出文件的各行中每行有2個數i和j,表示第i封信肯定是裝在第j個信封中。請按信的編號i從小到大順序輸出。若不能確定正確裝入信封的任何信件,則輸出“none”。

解析

這道題目還是有一定難度的……思想大概是這樣的:先dfs出一種完美匹配的方法。然后對于每一個點,刪去這個點完美匹配的邊,再次進行dfs。若不能完美匹配,則說明該點是肯定的。

代碼

#include<bits/stdc++.h>using namespace std;bool g[111][111];int used[111],xlinker[111],ylinker[111],x,y;int n,ans=0;int dfs(int x){ for(int i=1;i<=n;i++) if(used[i]==0 && !g[x][i]) { used[i]=1; if(!ylinker[i]||dfs(ylinker[i])) { ylinker[i]=x; xlinker[x]=i; return 1; } } return 0;} int main(){ cin>>n; while(cin>>x>>y&&x&&y)g[x][y]=1; for(int i=1;i<=n;i++)//先進行一次dfs { for(int j=1;j<=n;j++)used[j]=0; if(dfs(i))ans++; } if(ans!=n)cout<<"none"<<endl;//若本來就不能完美匹配,輸出none else { bool flag=false; for(int i=1;i<=n;i++)used[i]=0; for(int i=1;i<=n;i++)//對于每個點,刪去它完美匹配的邊 { int op=xlinker[i]; g[i][op]=1; ylinker[op]=0;xlinker[i]=0; if(!dfs(i)) //若不能完美匹配,則說明該點可以肯定,輸出該點和它連接的點 { cout<<i<<" "<<op<<endl; xlinker[i]=op; ylinker[op]=i; flag=true; } for(int j=1;j<=n;j++)used[j]=0;//不要忘記初始化 g[i][op]=0; } if(!flag)cout<<"none"<<endl;//若所有點都不能肯定,則輸出none }}

關于二分圖匹配的例題就沒有了!下期是關于二分圖判斷哦!~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91在线高潮白浆在线观看| 欧美激情va永久在线播放| 久久久亚洲欧洲日产国码aⅴ| 欧美日韩一区二区在线播放| 羞羞色国产精品| 日韩美女主播视频| 亚洲最大的免费| 88xx成人精品| 久久久国产一区| 亚洲国产精品一区二区久| 97精品国产97久久久久久| 日韩欧美一区二区三区久久| 国产成人精品电影| 色偷偷噜噜噜亚洲男人| 国产成人精品久久二区二区91| 日韩一中文字幕| 日韩在线国产精品| 亚洲人成77777在线观看网| 尤物99国产成人精品视频| 国产精品jizz在线观看麻豆| 色综合导航网站| 一区二区三区无码高清视频| 欧美精品在线观看| 一区二区三区四区在线观看视频| 中文字幕综合在线| 97久久超碰福利国产精品…| 97超级碰在线看视频免费在线看| 一本色道久久88综合亚洲精品ⅰ| 亚洲乱码一区av黑人高潮| 久久久视频免费观看| 永久免费看mv网站入口亚洲| 日韩欧美在线观看| 亚洲伊人久久大香线蕉av| 九九热精品视频在线播放| 91av视频在线免费观看| 国产精品视频永久免费播放| 亚洲精品色婷婷福利天堂| 日韩黄色高清视频| 97香蕉久久夜色精品国产| 成人黄色午夜影院| 国模精品视频一区二区| 亚洲第一福利网站| 欧美日韩一区二区在线播放| 97久久久久久| 亚洲跨种族黑人xxx| 欧洲精品在线视频| 国产一区二区三区18| 红桃av永久久久| 国产91露脸中文字幕在线| x99av成人免费| 欧美主播福利视频| 国产精品激情av在线播放| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲国产欧美一区二区三区久久| 亚洲美女黄色片| 欧美精品免费在线观看| 欧美精品videossex性护士| 伊人久久久久久久久久| 国产极品精品在线观看| 97香蕉久久夜色精品国产| 精品中文字幕久久久久久| 国模私拍视频一区| 不卡毛片在线看| 欧美丝袜美女中出在线| 欧美专区国产专区| 国产手机视频精品| 日韩激情片免费| 97成人精品视频在线观看| 91精品视频大全| 欧美日韩国产麻豆| 亚洲另类激情图| 欧美精品一区二区三区国产精品| 美女啪啪无遮挡免费久久网站| 国内精品一区二区三区四区| 日韩av在线资源| 亚洲精品国产精品国自产在线| 亚洲午夜小视频| 中文字幕日韩精品在线观看| 成人欧美一区二区三区在线湿哒哒| 精品国产乱码久久久久久婷婷| 亚洲最大福利视频| 亚洲国产精品va在线看黑人动漫| 亚洲欧美一区二区三区在线| 成人免费观看49www在线观看| 日本成人黄色片| 亚洲欧美国产一本综合首页| 91亚洲国产精品| 亚洲va男人天堂| 欧美巨大黑人极品精男| 精品久久香蕉国产线看观看亚洲| 亚洲精品美女在线观看播放| 久久精品免费播放| 91精品国产自产在线老师啪| 日本成人精品在线| 91香蕉嫩草神马影院在线观看| 亚洲视频视频在线| 久久久精品影院| 欧美自拍视频在线| 国产美女久久精品| 国产精品香蕉国产| 欧美日韩高清区| 久久久伊人日本| 中文字幕一精品亚洲无线一区| 欧美老女人性生活| 一区国产精品视频| 亚洲视频在线看| 欧美日韩福利在线观看| 97在线精品国自产拍中文| 欧美乱人伦中文字幕在线| 欧美在线欧美在线| 日韩在线观看高清| 国产精品7m视频| 欧美巨乳在线观看| 国产亚洲成av人片在线观看桃| 国产精品亚洲片夜色在线| 搡老女人一区二区三区视频tv| 色婷婷亚洲mv天堂mv在影片| 一夜七次郎国产精品亚洲| 91精品啪在线观看麻豆免费| 日韩动漫免费观看电视剧高清| 久色乳综合思思在线视频| 这里只有精品视频在线| 国产在线98福利播放视频| 欧美成人免费大片| 成人免费观看a| 久久成年人免费电影| 亚洲国产精品一区二区久| 久久久噜久噜久久综合| 2021久久精品国产99国产精品| 91精品国产高清自在线看超| 国产精品久久久久久亚洲调教| 亚洲精品国产电影| 欧美电影免费观看| 在线精品国产欧美| 亚洲乱亚洲乱妇无码| 亚洲97在线观看| 日韩精品亚洲视频| 久久福利视频导航| 91香蕉国产在线观看| 色伦专区97中文字幕| 亚洲美女精品成人在线视频| 日韩精品极品在线观看播放免费视频| 中文字幕国产亚洲2019| 欧美性猛交99久久久久99按摩| 久久99精品国产99久久6尤物| 国产免费一区二区三区香蕉精| 911国产网站尤物在线观看| 精品福利在线视频| 午夜精品久久久99热福利| 欧美日韩视频免费播放| 国产欧美一区二区三区久久| 亚洲人成免费电影| 国产精品美女999| 亚洲第一页在线| 国产精品丝袜高跟| 久久精品视频亚洲| 久久99精品久久久久久噜噜| 日韩中文视频免费在线观看| 亚洲久久久久久久久久久| 日韩欧美精品中文字幕| 亚洲国产成人在线播放| 久久精品人人做人人爽| 欧美在线观看网址综合| 伊人青青综合网站|