private void discharge(int u){
       while(excess[u] > 0){
           if(seen[u] < n){
               int v = seen[u];
               if((C[u][v]-F[u][v])>0 && height[u]>height[v]){ //residual
                   push(u,v);
               }
               else {
                   seen[u] += 1;
               }
           }
           else{
               relabel(u);
               seen[u]=0;
           }
       }
    }