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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU - 3488 Tour(二分图最小权匹配+KM)

發布時間:2024/4/11 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU - 3488 Tour(二分图最小权匹配+KM) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出n個城市,再給出m條有向的道路,問若想以一個或多個環的形式遍歷所有的城市一次,所需要的最小權值是多少

題目分析:剛拿到這個題目是有點懵的,因為不知道題目讓求什么,其實轉換一下就豁然開朗了,首先是遍歷一次和每個城市都要經過一次(除了每個環起點和終點的城市可以經過兩次),我們可以將n個城市抽象為一個二分圖,兩個子集分別是每個點的入度點和出度點,這樣當n個入度點和n個出度點完備匹配后,就至少能形成一個環了

這里從網上拿大佬的一個圖來理解一下吧:

上圖中點1和點2可以成環,點3點4和點5也可以成環,就不用多說了吧

因為讓求路徑之和最小,也就是最小權匹配,而且還是完備匹配,所以直接掛KM模板就好了,記得讓權值取負,這個題目是有重邊和零邊的,注意處理一下就好了,小細節

代碼:

#include<iostream> #include<cstdlib> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> #include<unordered_map> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=210;int n,m;int la[N],lb[N];//頂標bool visa[N],visb[N];//訪問標記int maze[N][N];//邊權int match[N];//右部點匹配了哪一個左部點int upd[N];bool dfs(int x) {visa[x]=true;//訪問標記:x在交錯樹中for(int i=1;i<=n;i++){if(!visb[i]){if(la[x]+lb[i]-maze[x][i]==0)//相等子圖{visb[i]=true;//訪問標記:y在交錯樹中if(!match[i]||dfs(match[i])){match[i]=x;return true;}}elseupd[i]=min(upd[i],la[x]+lb[i]-maze[x][i]);}}return false; } int KM() {memset(match,0,sizeof(match));for(int i=1;i<=n;i++){la[i]=-inf;lb[i]=0;for(int j=1;j<=n;j++)la[i]=max(la[i],maze[i][j]);}for(int i=1;i<=n;i++){while(1)//直到左部點找到匹配{memset(visa,false,sizeof(visa));memset(visb,false,sizeof(visb));memset(upd,inf,sizeof(upd));if(dfs(i))break;int delta=inf;for(int j=1;j<=n;j++)if(!visb[j])delta=min(delta,upd[j]);for(int j=1;j<=n;j++)//修改頂標{if(visa[j])la[j]-=delta;if(visb[j])lb[j]+=delta;}}}int ans=0;for(int i=1;i<=n;i++)ans+=maze[match[i]][i];return ans; }int main() { // freopen("input.txt","r",stdin); // ios::sync_with_stdio(false);int w;cin>>w;while(w--){memset(maze,-inf,sizeof(maze));scanf("%d%d",&n,&m);while(m--){int u,v,w;scanf("%d%d%d",&u,&v,&w);maze[u][v]=max(-w,maze[u][v]);}printf("%d\n",-KM());}return 0; }

?

總結

以上是生活随笔為你收集整理的HDU - 3488 Tour(二分图最小权匹配+KM)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲高清无码久久久 | 亚洲福利社| 懂色av一区二区三区四区五区 | 中文字幕35页 | 黄色美女av | 三级黄毛片 | 欧美视频自拍偷拍 | 亚洲国产精品女人久久久 | 午夜剧场福利社 | 亚洲国产精品999 | 久久第一页 | 色综合天天综合网天天狠天天 | 日韩中文一区二区 | 亚洲图片小说区 | 99热在线看 | 国产成人亚洲综合a∨婷婷 台湾a级片 | 秋霞网一区二区三区 | 久久精品一区二区三区不卡牛牛 | 亚洲激情社区 | 吻胸摸激情床激烈视频大胸 | 华人av在线 | 九九九久久久 | 黄色免费网页 | 国产又色又爽又黄的 | 靠逼视频网站 | 国产嫩草影院久久久 | 最新91视频| 春草 | 伊人久久久久噜噜噜亚洲熟女综合 | 亚洲国产精品二区 | 大学生高潮无套内谢视频 | 噜噜噜av| heyzo久久 | 久久综合色婷婷 | 久久国产欧美日韩精品 | 国产高潮网站 | 成人免费大全 | 黑人大群体交免费视频 | 国产有码在线观看 | 爱搞国产 | 奇米影视第四色777 波多野结衣一区二区三区免费视频 | 蜜桃成人网| 中文字幕av日韩 | 国产在线观看免费 | 关之琳三级做爰 | 午夜免费福利视频 | 一级片视频免费观看 | 欧美激情一区二区三区在线 | 久久看片网 | 国产免费视屏 | 欧美激情偷拍 | 浮生影视在线观看免费 | 亚洲熟女乱色一区二区三区 | 亚洲三级色 | 农夫色综合 | 国内一区二区三区 | 涩涩视频网站在线观看 | 天堂色av| 国产孕交 | 制服诱惑一区二区三区 | 成年人视频免费在线观看 | 色综合色综合色综合 | 少妇无套高潮一二三区 | 国产精品一区二区三区线羞羞网站 | 女人下面喷水视频 | 精品一区二区欧美 | 国产第一页精品 | 91精品国产日韩91久久久久久 | 日本性生活一级片 | 国产欧美一区二区在线观看 | 久久中文娱乐网 | 欧美激情在线一区 | 深夜视频在线播放 | 天堂福利视频 | av黄色av| 一区二区传媒有限公司 | 日韩黄色免费观看 | 亚洲欧美日韩精品一区 | 亚洲毛片精品 | 另类视频在线观看 | 一二三区在线观看 | 亚洲精品777| 婷婷丁香一区二区三区 | 日韩欧美精品一区二区 | 性欧美video另类hd尤物 | 国产污污视频在线观看 | 国产91丝袜在线播放九色 | 91视频精品| 中文天堂在线资源 | 亚洲欧美自拍一区 | 91精品欧美 | 东方av正在进入 | av日韩不卡 | 日本不卡在线视频 | 日本色站 | 精品久久二区 | juliaannxxxxx高清 黄页网站在线播放 | 四虎影视永久免费 | 亚洲操片 |