日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > HDU 3572 網絡流

HDU 3572 網絡流

來源:程序員人生   發布時間:2016-07-23 10:27:39 閱讀次數:2454次

點擊打開鏈接

題意:n個工作,m個機器來完成,每一個工作有P,S,E,P代表這個工作需要P天,而S為最早開始的時間,E為最晚結束時間,每一個機器在固定時間只能做1個工作,問所有的工作能否在規定時間內完成

思路:由于每天的機器只能做1個工作,那末天數肯定是1部,就是2分圖的右部,然后左部應當是甚么呢,那就是n個工作了,然后流量,對每一個工作來講,它需要的天數就是源點到工作的流量,然后工作到右部的就是可以連的就是1,最后的m天呢,我之前是想著直接右部是m個機器的天數,發現太笨拙了,世界在每一個天數后面連向匯點的時候直接是m和之前就是1樣的嘛

#include <queue> #include <vector> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> #include <algorithm> using namespace std; typedef long long ll; typedef unsigned long long ull; const int inf=0x3f3f3f3f; const ll INF=0x3f3f3f3f3f3f3f3fll; const int maxn=1010; struct edge{ int to,cap,rev; edge(int a,int b,int c){to=a;cap=b;rev=c;} }; vector<edge>G[maxn]; int level[maxn],iter[maxn]; void add_edge(int from,int to,int cap){ G[from].push_back(edge(to,cap,G[to].size())); G[to].push_back(edge(from,0,G[from].size()⑴)); } void bfs(int s){ memset(level,⑴,sizeof(level)); queue<int>que;level[s]=0; que.push(s); while(!que.empty()){ int v=que.front();que.pop(); for(unsigned int i=0;i<G[v].size();i++){ edge &e=G[v][i]; if(e.cap>0&&level[e.to]<0){ level[e.to]=level[v]+1; que.push(e.to); } } } } int dfs(int v,int t,int f){ if(v==t) return f; for(int &i=iter[v];i<G[v].size();i++){ edge &e=G[v][i]; if(e.cap>0&&level[v]<level[e.to]){ int d=dfs(e.to,t,min(f,e.cap)); if(d>0){ e.cap-=d; G[e.to][e.rev].cap+=d; return d; } } } return 0; } int max_flow(int s,int t){ int flow=0; while(1){ bfs(s); if(level[t]<0) return flow; memset(iter,0,sizeof(iter)); int f; while((f=dfs(s,t,inf))>0) flow+=f; } } int P[maxn],E[maxn],S[maxn]; int main(){ int T,n,m,cas=1; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); for(int i=0;i<maxn;i++) G[i].clear(); int max1=0,sum=0; for(int i=1;i<=n;i++){ scanf("%d%d%d",&P[i],&S[i],&E[i]); sum+=P[i]; if(E[i]>max1) max1=E[i]; } for(int i=1;i<=n;i++) add_edge(0,i,P[i]); for(int i=1;i<=n;i++){ for(int j=S[i];j<=E[i];j++){ add_edge(i,j+n,1); } } for(int i=1;i<=max1;i++) add_edge(i+n,n+max1+1,m); int ans=max_flow(0,n+max1+1); if(ans==sum) printf("Case %d: Yes\n",cas++); else printf("Case %d: No\n",cas++); printf("\n"); } return 0; }

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产全黄a一级毛片91 | 欧美日韩免费做爰视频 | 国产一二三区免费观看 | 亚洲欧美国产一区二区三区 | 成人毛片视频在线观看 | 国产二区自拍 | 男女毛片 | 久久国产视频网站 | 久久国产精品毛片 | 九九久久国产 | 麻豆视频在线观看免费网站黄 | 日韩视频一区二区 | 亚洲一区在线观看视频 | 日韩福利在线 | 可以免费看av | 欧美一区二区三区爱爱 | 综合国产视频 | 久久久性 | 中文字幕第一页在线 | 九九视频网 | 亚洲最大黄网 | 日韩av高清在线观看 | 日韩91| 国产精品18| av电影在线观看网址 | 欧美69视频| 伦乱视频 | 久久99成人 | 欧美成人在线免费 | 91av亚洲| 亚洲欧美视频一区 | 国产精品视频一二三区 | 国产精品久久影院 | 欧美xxxx黑人又粗又长 | 欧美综合亚洲图片综合区 | 国产免费视频在线 | 亚洲成人精品久久久 | 欧美精品一区二区三区视频 | 亚洲精品9999 | 国产suv精品一区二区四 | 干片网在线 |