int main() { int m,nn,l,i,T,a,b; double w; scanf("%d",&T); s = 0; while(T--){ scanf("%d%d%d",&m,&nn,&l); t = m+nn+1; memset(con,0,sizeof(con)); for(i = 1; i <= m; i++){ scanf("%lf",&w); con[s][i] = log(w); } for(i = m+1; i <= m+nn; i++){ scanf("%lf",&w); con[i][t] = log(w); } for(i = 0; i < l; i++){ scanf("%d%d",&a,&b); con[a][b+m] = 1e10; } n = m+nn+2; printf("%.4lf\n",exp(Maxflow())); } return 0; }
void AlphaBetaSwap(){ INT32T alpha, beta; for (alpha = 0; alpha < numLabels; alpha++) for (beta = alpha + 1; beta < numLabels; beta++){ ModifyMap(alpha, beta); Maxflow(); ChangeLabel(alpha, beta); } }
void TestMaxflow(){ InitMap(); N = 6; source = 0; sink = N - 1; AddEdge(source, 1, 100, 0); AddEdge(1, 2, 110, 0); AddEdge(2, sink, 20, 0); AddEdge(source, 3, 30, 0); AddEdge(3, 4, 200, 0); AddEdge(4, sink, 201, 0); AddEdge(2, 4, 11, 0); AddEdge(4, 2, 30, 0); Maxflow(); }