#include<stdio.h> #include<string.h> #include<queue> #define MAXN 1010 using namespace std; int map[MAXN][MAXN],n,dis[MAXN]; int min(int x,int y) {return x<y?x:y;} int bfs() { int i,j; queue<int>q; memset(dis,-1,sizeof(dis)); dis[1]=0; q.push(1); while(!q.empty()) { int t=q.front(); q.pop(); for(i=1;i<=n;i++) { if(map[t][i]&&dis[i]<0) { dis[i]=dis[t]+1; q.push(i); } } } if(dis[n]>0) return 1; return 0; } int dfs(int u,int low) { int i,j,a; if(u==n) return low; for(i=1;i<=n;i++) { if(map[u][i]&&dis[i]==dis[u]+1) { a=dfs(i,min(map[u][i],low)); if(a<=0)continue; map[u][i]-=a; map[i][u]+=a; return a; } } return 0; } int main() { int t,ff=0,i,j,m; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(map,0,sizeof(map)); for(i=0;i<m;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); map[x][y]+=z; } int ans=0; while(bfs()) { while(1) { int a=dfs(1,99999999); if(!a)break; ans+=a; } } printf("Case %d: %d ",++ff,ans); } }