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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

POJ - 2175 Evacuation Plan(最小费用最大流+消圈定理)

發(fā)布時間:2024/4/11 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ - 2175 Evacuation Plan(最小费用最大流+消圈定理) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出n個建筑物和m個避難所,每個建筑物中的人需要到避難所中去避難,規(guī)定花費是建筑物和避難所的曼哈頓距離+1,現(xiàn)在給出一種路線方案,問這個方案是不是最優(yōu)的,如果不是,輸出比當前方案更優(yōu)的答案

題目分析:雖然看完題目之后感覺是一道最小費用最大流的題目,但是如果直接照做的話會超時,可能是構(gòu)圖卡SPFA了,其實我們可以換個角度去思考,因為題目并不是要求我們輸出最優(yōu)解,而是更優(yōu)一點的就行,那么我們可以模擬一下整個過程,這個過程叫消圈定理,具體解釋詳見:點我點我

其實就是根據(jù)當前方案的流量建立一張費用圖,試著跑一下spfa判斷當前圖中是否存在負環(huán),如果存在負環(huán)的話說明替換該負環(huán)上的邊后可以達到更優(yōu)的解,具體建圖方法因為不是真的要求費用流,所以并不需要源點提供流量,但是需要匯點中轉(zhuǎn)流量,建好圖后以匯點為起點跑spfa就好了,算是一個模板題目了,等跑出負環(huán)后再基于負環(huán)操作:

  • 若當前u->v是建筑物到避難所,則方案+1
  • 若當前u->v是避難所到建筑物,則方案-1
  • 在這里需要注意一下,spfa返回的點并不一定是在負環(huán)上的點,需要我們操作一波將其轉(zhuǎn)移到負環(huán)上的點才能繼續(xù)操作

    代碼:

    #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> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=210;int n,m,cnt,head[N],sum[N],ans[N][N];struct Edge {int to,next,w; }edge[N*N];void addedge(int u,int v,int w) {edge[cnt].to=v;edge[cnt].w=w;edge[cnt].next=head[u];head[u]=cnt++; }struct Pos {int x,y,num;void input(){scanf("%d%d%d",&x,&y,&num);} }a[N];int dis(int x,int y) {return abs(a[x].x-a[y+n].x)+abs(a[x].y-a[y+n].y)+1; }bool vis[N];int d[N],num[N],pre[N];int spfa(int st) {int n=st;memset(pre,-1,sizeof(pre));memset(vis,false,sizeof(vis));memset(d,inf,sizeof(d));memset(num,0,sizeof(num));queue<int>q;d[st]=0;vis[st]=true;num[st]++;q.push(st);while(q.size()){int u=q.front();q.pop();vis[u]=false;for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].to;int w=edge[i].w;if(d[v]>d[u]+w){d[v]=d[u]+w;pre[v]=u;if(!vis[v]){q.push(v);num[v]++;vis[v]=true;if(num[v]>n)return v;}}}}return -1; }void init() {memset(sum,0,sizeof(sum));memset(head,-1,sizeof(head));cnt=0; }int main() { // freopen("input.txt","r",stdin); // ios::sync_with_stdio(false);while(scanf("%d%d",&n,&m)!=EOF){int S=n+m+1;init();for(int i=1;i<=n+m;i++)a[i].input();for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&ans[i][j]);addedge(i,j+n,dis(i,j));if(ans[i][j])addedge(j+n,i,-dis(i,j));sum[j]+=ans[i][j];}}for(int i=1;i<=m;i++){if(sum[i]>0)addedge(S,i+n,0);if(sum[i]<a[i+n].num)addedge(i+n,S,0);}int id=spfa(S);if(id==-1)puts("OPTIMAL");else{puts("SUBOPTIMAL");memset(vis,false,sizeof(vis));int v=id;while(!vis[v]){vis[v]=true;v=pre[v];}id=v;do{int u=pre[v];//u->vif(u<=n&&v>n&&v!=S)ans[u][v-n]++;if(v<=n&&u>n&&u!=S)ans[v][u-n]--;v=u;}while(v!=id);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)printf("%d ",ans[i][j]);printf("\n");}}}return 0; }

    ?

    超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術(shù)人生

    總結(jié)

    以上是生活随笔為你收集整理的POJ - 2175 Evacuation Plan(最小费用最大流+消圈定理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 国产精品19乱码一区二区三区 | 日韩伦理大全 | 日本中文字幕二区 | 好吊色一区二区三区 | 国产成人超碰人人澡人人澡 | 国产黄色片免费观看 | 精品国产大片大片大片 | 色多多av| 手机在线看a | 亚洲理论在线观看 | 日本一本在线观看 | 2019中文字幕在线观看 | 日韩在线视频一区 | 午夜在线观看视频 | 国产a级精品 | 中文字幕在线看 | 久久激情综合 | 人妻熟人中文字幕一区二区 | 女人脱下裤子让男人捅 | 日韩欧美中文字幕一区 | 91国产视频在线播放 | 欧美午夜不卡 | 国产刺激对白 | 国产不卡一区二区视频 | 梦梦电影免费高清在线观看 | 中文在线资源天堂 | 日韩在线电影一区 | 91丨九色丨蝌蚪丨对白 | 另类色综合 | 精品一区二区三区久久 | 天天干夜夜拍 | 成人爽a毛片一区二区免费 日本高清免费看 | 成人激情四射网 | 成年人黄色片网站 | 一区二区三区在线不卡 | 男人午夜剧场 | 日韩69| 精品国产aⅴ一区二区三区四川人 | 一区二区三区黄色录像 | 丰满少妇中文字幕 | 香蕉在线视频播放 | 美女在线观看视频 | 男人天堂网在线 | 黄色片在哪看 | 亚洲xx网站 | 精品黑人一区二区三区观看时间 | 中日韩一级片 | 午夜婷婷在线观看 | 亚洲网址在线 | 国产亚洲精品久久久久久久久动漫 | 亚洲国产av一区 | 男男gay动漫 | 涩色网| 中国黄色免费网站 | 日韩欧美高清在线 | 高清av网站 | 四虎在线看片 | 青青草伊人久久 | 中文字幕一区二区久久人妻网站 | 亚洲精品成人片在线观看精品字幕 | 一本久道久久综合 | 成人午夜免费电影 | 亚洲成人一级 | 樱花动漫无圣光 | 超碰婷婷 | 91激情视频在线 | 成人无码一区二区三区 | 操天天 | 香蕉综合视频 | 外国黄色网| jizz一区二区 | 日本理论片午伦夜理片在线观看 | 成人性免费视频 | 日韩av片在线免费观看 | 我把护士日出水了视频90分钟 | 在线成人一区 | 日韩成年视频 | wwwxx国产| 丰满少妇被猛烈进入一区二区 | 最新日韩av在线 | 狠狠操狠狠摸 | 先锋影音制服丝袜 | 久久久久九九九九 | 女教师痴汉调教hd中字 | 日本一区二区视频在线播放 | 九热精品视频 | 亚洲美女视频一区 | 五月婷婷六月激情 | 亚洲欧美精品久久 | 国产在线一卡二卡 | 女人高潮被爽到呻吟在线观看 | 女生毛片 | 日韩簧片在线观看 | 日韩中文字幕观看 | 久久精品一区 | 九一精品国产 | 在线看片资源 | 日本一区二区三区四区在线观看 | 男女无套免费视频网站动漫 |