int check(double g) { mf.ClearAll(n+2); memset(deg, 0, sizeof(deg)); for(int i=1; i<=n; i++) for(int j = i+1; j <= n; j++) if(a[j] < a[i]) mf.AddEdge(i, j, 1), mf.AddEdge(j, i, 1), deg[i]++, deg[j]++; for(int i=1; i<=n; i++) mf.AddEdge(source, i, U); for(int i=1; i<=n; i++) mf.AddEdge(i, sink, g*2.0 + 1.0*U - 1.0*deg[i]); double curf = mf.Maxflow(source, sink); return dcmp((U*n - curf)/2.0); }
int main() { int Num,Edgenum; while(~scanf("%d%d",&Edgenum,&Num)) { g.ClearAll(Num); for(int i=0;i<Edgenum;i++) { int st,ed,cost; scanf("%d%d%d",&st,&ed,&cost);st--;ed--; g.AddEdge(st,ed,cost); } int ans=g.MaxFlow(0,Num-1); printf("%d\n",ans); } return 0; }