#include<bits/stdc++.h>
using namespace std;
const int inf = 20000000;
int cnt,m,n,head[420],dis[420],now[420];
struct qedge{
int to,nxt,w;
}edge[420];
void add(int x,int y,int z){
edge[++cnt].to = y;
edge[cnt].w = z;
edge[cnt].nxt = head[x];
head[x] = cnt;
edge[++cnt].to = x;
edge[cnt].w = 0;
edge[cnt].nxt = head[y];
head[y] = cnt;
}
bool bfs(){
for(int i = 1;i <= n;i++) dis[i] = inf;
queue<int> q;
q.push(1);
dis[1] = 0;
now[1] = head[1];
while(!q.empty()){
int u = q.front();
q.pop();
for(int i = head[u];i;i = edge[i].nxt){
int v = edge[i].to;
if(edge[i].w > 0 && dis[v] == inf){
q.push(v);
dis[v] = dis[u] + 1;
now[v] = head[v];
if(v == n) return true;
}
}
}
return false;
}
int dfs(int x,int sum){
if(x == n) return sum;
int k , res = 0;
for(int i = now[x];i && sum;i = edge[i].to){
now[x] = i;
int v = edge[i].to;
if(edge[i].w > 0 && (dis[v] == dis[x] + 1)){
k = dfs(v,min(edge[i].w,sum));
if(k == 0) dis[v] = inf;
edge[i].w -= k;
edge[i^1].w += k;
res += k;
sum -= k;
}
}
return res;
}
int main(){
cnt = 1;
cin>>m>>n;
for(int i = 1;i <= m;i++){
int a,b,c;
cin>>a>>b>>c;
add(a,b,c);
}
int ans = 0;
while(bfs()){
ans += dfs(1,inf);
}
cout<<ans;
}
几乎全TLE,就奇怪对了一个点,我却不知道哪里错了