0分求调
查看原帖
0分求调
1459071
Yxa_Sheep楼主2025/6/25 19:01
#include <bits/stdc++.h>
#define N 5010
#define INF 0x7fffffff
using namespace std;
int m, n, s, t, flag, minn, top, a[N], book[N], e[N][N];
long long ans;
void dfs(int x, int minn)
{
    if (flag)
        return;
	if (x == t)
	{
		flag = 1, ans += minn;
		for (int i = 1; i < top; i++)
			e[a[i]][a[i + 1]] -= minn, e[a[i + 1]][a[i]] += minn;
		return;
	}
	for (int i = 1; i <= n; i++)
		if (e[x][i] > 0 && !book[i])
			book[i] = 1, a[++top] = i, dfs(i, min(minn, e[x][i])), top--;
}
int main()
{
	scanf("%d%d%d%d", &m, &n, &s, &t);
	for (int i = 1; i <= m; i++)
	{
		int u, v, w;
		scanf("%d%d%d", &u, &v, &w);
		e[u][v] += w;
	}
	do
	{
        memset(book, 0, sizeof(book));
		book[s] = 1, flag = top = 0, a[++top] = s;
		dfs(s, INF);
	} while (flag);
	printf("%d", ans);
    return 0;
}
2025/6/25 19:01
加载中...