WA 10pts求调
查看原帖
WA 10pts求调
608273
___PatrickChen___楼主2023/6/10 19:48
#include <bits/stdc++.h>
#define endl '\n'

using namespace std;

int n,m,s,t,head[201],now[201],dep[201],cnt;
struct edge{
	int v,w,next;
}e[10005];


void add(int u,int v,long long w) {
	e[++cnt]={v,w,head[u]};
	head[u]=cnt;
	e[++cnt]={v,0,head[v]};
	head[v]=cnt;
}

bool bfs(){
	for(int i=1;i<=n;i++)dep[i]=-1;
	queue<int> q;
	q.push(s);
	dep[s]=0;
	now[s]=head[s];
	while(!q.empty()) {
		int x=q.front();
		q.pop();
		for(int i=head[x];i;i=e[i].next) {
			int v=e[i].v;
			if(e[i].w>0&&dep[v]==-1) {
				q.push(v);
				now[v]=head[v];
				dep[v]=dep[x]+1;
				if(v==t)return 1;
			}
		}
	}
	return 0;
}

long long dfs(int x,long long sum){
	if(x==t)return sum;
	long long k,res=0;
	for(register int i=now[x];i&&sum;i=e[i].next){
		now[x]=i;
		int v=e[i].v;
		if(e[i].w>0&&(dep[v]==dep[x]+1)) {
			k=dfs(v,min(sum,(long long)(e[i].w)));
			if(k==0)dep[v]=-1;
			e[i].w-=k;
			e[i^1].w+=k;
			res+=k;
			sum-=k;
		}
	}
	return res;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m >> s >> t;
	for(int i=1;i<=m;i++) {
		int u,v,w;
		cin >> u >> v >> w;
		add(u,v,w);
	}
	long long ans=0;
	while(bfs())ans+=dfs(s,1e18);
	cout << ans << endl;
	return 0;
}

最后一个点WA了

评测记录

2023/6/10 19:48
加载中...