关于运行没有加括号的函数
  • 板块灌水区
  • 楼主dodo487
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/3/8 11:02
  • 上次更新2023/10/23 22:43:19
查看原帖
关于运行没有加括号的函数
544780
dodo487楼主2023/3/8 11:02
#include<bits/stdc++.h>
using namespace std;
const int N=210;
const int M=5010;
const int inf=0x7fffffff;
struct EDGE{
	int to,next,c;
}a[M<<1];int head[N],num=1;
void add(int from,int to,int w){
	a[++num].to=to;
	a[num].c=w;
	a[num].next=head[from];
	head[from]=num;
}
int n,m,s,t;
int dis[N],in[N];
bool spfa(){
	for(int i=1;i<=n;i++) dis[i]=inf,in[i]=0;
	queue<int> q;
	q.push(s);
	dis[s]=0;
	while(!q.empty()){
		int now=q.front();
		q.pop();
		in[s]=0;
		for(int i=head[now];i;i=a[i].next){
			int to=a[i].to;
			if(a[i].c==0||dis[to]<=dis[now]+1) continue;
			dis[to]=dis[now]+1;
			if(in[to]) continue;
			q.push(to);
			in[to]=1;
		}
	}
	if(dis[t]!=inf) return 1;
	return 0;
}
int dfs(int now,int minflow){
	if(now==t) return minflow;
	for(int i=head[now];i;i=a[i].next){
		int to=a[i].to;
		if(!a[i].c||dis[to]!=dis[now]+1) continue;
		int flow=0;
		if(flow=dfs(to,min(minflow,a[i].c))){
			a[i].c-=flow;
			a[i^1].c+=flow;
			return flow;
		}
	}
	return 0;
}
int dinic(){
	int sumflow=0;
	while(spfa()){
		int minflow=0;
		while(minflow=dfs(s,inf)) sumflow+=minflow;
	}
	return sumflow;
}
int main(){
	scanf("%d%d%d%d",&n,&m,&s,&t);
	for(int i=1;i<=m;i++){
		int from,to,w;
		scanf("%d%d%d",&from,&to,&w);
		add(from,to,w);
		add(to,from,0);
	}
	cout<<dinic<<endl;////////////////这里
}

网络流dinic模板,为啥注释的那里没加括号也能运行,输出1

2023/3/8 11:02
加载中...