hdu3549Flow Problem(最大流模板题)
创始人
2024-02-06 21:43:37
0

题目链接:

http://acm.split.hdu.edu.cn/showproblem.php?pid=3549

题目大意:

n个点m条边,找到1到n使得流量最大。

题目思路:

最大流模板题,这里用到了Dinic算法,学习传送门--》https://comzyh.com/blog/archives/568/《--

代码:

#include 
using namespace std;  const int maxn=1000;  struct node{  int u,v,next,c;  
};  
node edge[maxn<<1];  
int head[maxn];  
int cnt;  
int dis[maxn];  
int n,m;//n是边的个数,m是顶点个数 
int ans; //最大流 void init(){  memset(head,-1,sizeof(head));  cnt=0;  memset(dis,-1,sizeof(dis));  ans=0;  
}  void add(int a,int b,int c){  //建立邻接表 edge[cnt].u=a;  edge[cnt].v=b;  edge[cnt].c=c;  edge[cnt].next=head[a];  head[a]=cnt++;  
}  int bfs()// 给各点分层,离源点的远近分  
{  memset(dis, -1, sizeof(dis));  queue q;  dis[1] = 0;  q.push(1);  int i;  int cur;  while(!q.empty())  {  cur = q.front();  q.pop();  for(i = head[cur]; i != -1; i = edge[i].next)  {  if(dis[edge[i].v] == -1 && edge[i].c > 0)  {  dis[edge[i].v] = dis[cur] + 1;  q.push(edge[i].v);  }  }  }  if(dis[m] < 0)  return 0;  return 1;  
}  int Find(int x,int low){//找增广  int a;  if(x==m) return low;  for(int i=head[x];i!=-1;i=edge[i].next){  int v=edge[i].v;  if(dis[v]==dis[x]+1 && edge[i].c>0 &&(a=Find(v,min(low,edge[i].c))))  {  edge[i].c -=a;  edge[i^1].c +=a;  return a;  }  }  return 0;  
}  void dinic(){  int temp;  while(bfs()){  
//        printf("%d\n",tmp);  
//        if(tmp==0) break;  temp=Find(1,0x3f3f3f3f);  ans+=temp;  }  // printf("%d\n",ans);  
}  int main(){
int t;cin>>t;
for(int i=1;i<=t;i++){   scanf("%d%d",&m,&n);int a,b,flow;  init();  for(int i=1;i<=n;i++){  scanf("%d%d%d",&a,&b,&flow);  //flow是权值。 add(a,b,flow);  add(b,a,0);  }  dinic();printf("Case %d: %d\n",i,ans);  }
return 0;  
}  

上一篇:kafka常用命令

下一篇:Java面试题相关

相关内容

热门资讯

中证A500ETF摩根(560... 8月22日,截止午间收盘,中证A500ETF摩根(560530)涨1.19%,报1.106元,成交额...
A500ETF易方达(1593... 8月22日,截止午间收盘,A500ETF易方达(159361)涨1.28%,报1.104元,成交额1...
何小鹏斥资约2.5亿港元增持小... 每经记者|孙磊    每经编辑|裴健如 8月21日晚间,小鹏汽车发布公告称,公司联...
中证500ETF基金(1593... 8月22日,截止午间收盘,中证500ETF基金(159337)涨0.94%,报1.509元,成交额2...
中证A500ETF华安(159... 8月22日,截止午间收盘,中证A500ETF华安(159359)涨1.15%,报1.139元,成交额...
科创AIETF(588790)... 8月22日,截止午间收盘,科创AIETF(588790)涨4.83%,报0.760元,成交额6.98...
创业板50ETF嘉实(1593... 8月22日,截止午间收盘,创业板50ETF嘉实(159373)涨2.61%,报1.296元,成交额1...
港股异动丨航空股大幅走低 中国... 港股航空股大幅下跌,其中,中国国航跌近7%表现最弱,中国东方航空跌近5%,中国南方航空跌超3%,美兰...
电网设备ETF(159326)... 8月22日,截止午间收盘,电网设备ETF(159326)跌0.25%,报1.198元,成交额409....
红利ETF国企(530880)... 8月22日,截止午间收盘,红利ETF国企(530880)跌0.67%,报1.034元,成交额29.0...