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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Soldier and Traveling

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

http://codeforces.com/contest/546/problem/E

題意:給定一張n個(gè)結(jié)點(diǎn),m條邊的無(wú)向圖,再給定n個(gè)整數(shù)a[1],a[2]…a[n]代表初始時(shí)每個(gè)結(jié)點(diǎn)上駐守的士兵數(shù)量,每個(gè)結(jié)點(diǎn)的士兵可以在原地不動(dòng),也可以移動(dòng)到與當(dāng)前結(jié)點(diǎn)鄰接的其他結(jié)點(diǎn)上去,但只能移動(dòng)一次。現(xiàn)在問,能否通過合理的移動(dòng)使得最終這n個(gè)結(jié)點(diǎn)駐守的士兵數(shù)量分別為b[1],b[2]…b[n],如果可以輸出”YES”,同時(shí)輸出一個(gè)矩陣表示士兵的移動(dòng)情況,矩陣的第u行第v列代表有多少個(gè)士開始在u結(jié)點(diǎn),后來(lái)到了v結(jié)點(diǎn),如果無(wú)解輸出”NO”即可。

題解:網(wǎng)絡(luò)流

建模,首先建立一個(gè)下標(biāo)為0的源點(diǎn)和下標(biāo)為n*2+1的匯點(diǎn),然后把原來(lái)圖中的每個(gè)結(jié)點(diǎn)u拆分成兩個(gè)點(diǎn),u和u+n,然后連接一條(u,u+n,inf)的有向邊,代表士兵可以原地不動(dòng),同時(shí)把源點(diǎn)到各個(gè)點(diǎn)連接一條有向邊(0,u,a[u])代表初始狀態(tài),同時(shí)連接各個(gè)點(diǎn)到匯點(diǎn)一條有向邊(u,n*2+1,b[u])表示最后的狀態(tài),然后跑最大流算法,如果最大流的值等于數(shù)組a的總和和數(shù)組b的總和,那就說(shuō)明問題有解,否則無(wú)解。

有個(gè)坑點(diǎn)是題目不保證數(shù)組a,b的和相同。

/* *@Author: STZG *@Language: C++ */#include<iostream> #include<algorithm> #include<cstdlib> #include<cstring> #include<cstdio> #include<string> #include<vector> #include<bitset> #include<queue> #include<deque> #include<stack> #include<cmath> #include<list> #include<map> #include<set> //#define DEBUG #define RI register int #define endl "\n" using namespace std; typedef long long ll; //typedef __int128 lll; const int N=400+10; const int M=100000+10; const int MOD=1e9+7; const double PI = acos(-1.0); const double EXP = 1E-8; const int INF = 0x3f3f3f3f; int s,t,n,m,k,p,l,r,u,v,w,c2; int ans,cnt,flag,temp,sum; int dis[N],a[N],b[N]; int mp[N][N]; struct node{int u,v,c;node(){};node(int form,int to,int cap):u(form),v(to),c(cap){} }; vector<node>edge; vector<int> G[N]; void Addedge(int u,int v,int cap){edge.push_back({u,v,cap});edge.push_back({v,u,0});int sz=edge.size();G[u].push_back(sz-2);G[v].push_back(sz-1); } bool bfs(int u){memset(dis,-1,sizeof(dis));dis[u]=0;queue<int>q;q.push(u);while(!q.empty()){int u=q.front();q.pop();for(int i=0;i<G[u].size();i++){node e=edge[G[u][i]];//cout<<u<<" "<<e.v<<endl;if(dis[e.v]<0&&e.c>0){dis[e.v]=dis[u]+1;q.push(e.v);}}}return dis[t]>0; } int dfs(int u,int flow){if(u==t)return flow;int now;for(int i=0;i<G[u].size();i++){node e=edge[G[u][i]];if(e.c>0&&dis[u]+1==dis[e.v]&&(now=dfs(e.v,min(flow,e.c)))){edge[G[u][i]].c-=now;edge[G[u][i]^1].c+=now;return now;}}return 0; } void dinic(){while(bfs(s)){int res=0;while(res=dfs(s,INF)){ans+=res;}} } void init(){s=0;t=2*n+1;for(int i=s;i<=t;i++)G[i].clear();edge.clear();ans=0;sum=0; } int main() { #ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout); #endif//ios::sync_with_stdio(false);//cin.tie(0);//cout.tie(0);//scanf("%d",&t);//int T=0;while(~scanf("%d%d",&n,&m)){init();for(int i=1;i<=n;i++)scanf("%d",&a[i]),sum+=a[i];temp=sum;for(int i=1;i<=n;i++)scanf("%d",&b[i]),sum-=b[i];for(int i=1;i<=n;i++)Addedge(s,i,a[i]);for(int i=1;i<=n;i++)Addedge(i,i+n,INF);for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);Addedge(u,v+n,INF);Addedge(v,u+n,INF);}for(int i=1;i<=n;i++)Addedge(i+n,t,b[i]);if(sum){cout<<"NO"<<endl;continue;}dinic();//cout<<ans<<endl;if(ans==temp){cout<<"YES"<<endl;for(int i=1;i<edge.size();i+=2){if(1+n<=edge[i].u&&edge[i].u<=n*2&&1<=edge[i].v&&edge[i].v<=n&&edge[i].c>0)mp[edge[i].v][edge[i].u-n]=edge[i].c;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)printf("%d%c",mp[i][j]," \n"[j==n]);}else{cout<<"NO"<<endl;}}#ifdef DEBUGprintf("Time cost : %lf s\n",(double)clock()/CLOCKS_PER_SEC); #endif//cout << "Hello world!" << endl;return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的Soldier and Traveling的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 台湾黄色网址 | 蜜桃av导航 | 国语av在线 | 亚洲成人av电影网站 | 日韩黄色大片 | 性感av在线 | www,四虎| 蜜桃视频一区 | av中文字幕一区二区三区 | 少妇丰满尤物大尺度写真 | 男同志毛片特黄毛片 | 青青草老司机 | 中国挤奶哺乳午夜片 | 主人性调教le百合sm | 亚洲综合在线网 | 国产精品一区二区三区在线 | 97超碰在线播放 | 国产一级片网站 | 波多野结衣a级片 | 中文字幕乱码人妻二区三区 | 欧美成人三级在线视频 | 嫩草视频在线免费观看 | 亚洲高清欧美 | 天天躁夜夜躁狠狠是什么心态 | 波多野结衣在线观看一区二区三区 | 国产午夜精品在线观看 | aa黄色片 | 成人av免费观看 | 91丨九色丨国产 | 国产一区二区视频免费 | 国产嘿咻视频 | 日韩久操 | 亚洲欧洲精品一区二区 | 亚洲欧美日韩精品 | 一区二区三区四区av | 亚洲丁香婷婷 | 激情婷婷网 | 久久精品毛片 | 久久精品色欲国产AV一区二区 | 无码一区二区三区在线观看 | 国产在线最新 | 好吊操av | 日韩av午夜 | 好吊色视频一区二区 | 无码精品人妻一区二区三区漫画 | 精品国产一级片 | 九久久久久 | 国产伦精品一区二区三区照片 | 日本妈妈9 | 天堂中文在线最新 | 中文在线观看免费高清 | 曰本三级日本三级日本三级 | 黄色大片一级 | 精品一二三区久久aaa片 | xxxx69视频| 99热手机在线观看 | 日本激情视频一区二区三区 | 久久888| 国产又大又黄的视频 | 色婷婷色婷婷 | 国产精品久久久久久久久久久新郎 | 天天撸天天射 | www九色| 色噜噜一区二区 | 日韩一级欧美一级 | 乱老熟女一区二区三区 | 69社| 在线观看麻豆av | 在线观看911视频 | 93久久精品日日躁夜夜躁欧美 | 成人免费一区 | 欧美一级网站 | 办公室摸腿吻胸激情视频 | 男女那个视频 | 国产一区二区视频免费观看 | 久久婷婷五月综合色国产香蕉 | 国产手机av在线 | 天堂а√在线最新版中文在线 | 伊人久久爱 | 国产大片一区二区 | 免费成人深夜小野草 | 精品视频区 | 久久久午夜精品福利内容 | 91蜜桃臀久久一区二区 | 国产日韩一级片 | 郑艳丽三级 | 免费成人深夜夜行网站视频 | 国产a级大片 | 后进极品白嫩翘臀在线视频 | 国产黄在线播放 | 岛国大片在线观看 | 多啪啪免费视频 | 人妻中文字幕一区二区三区 | 精品国产影院 | www.爱爱.com| 欧洲天堂网 | 91碰在线视频 | 日韩美女做爰高潮免费 | 国产丝袜美腿一区二区三区 |