Eu acho que o seguinte é um algoritmo de tempo polinomial baseado no fluxo máximo. Seja a entrada.G(V,E),b,c
- Construir um grafo orientado bipartido com e sendo as partições esquerdas e direitas e sendo as arestas dirigidas a partir de a .L R F L RH(L,R,F)LRF LR
- Vamos . Existem vértices e vértices em .n L n R|V|=nnLnR
- Cada vértice possui uma "cópia" em (digamos ) e uma cópia em (digamos ).L v l R v rv∈VLvlRvr
- Se adicione uma aresta direcionada de a . Cada uma dessas arestas tem capacidade 1.u l v r(u,v)∈Eulvr
- Adicionar um nó "fonte" e adicionar bordas dirigidas de para cada vértice em . Cada uma dessas arestas tem capacidade .s L bssLb
- Adicione um nó "afundar" adicione arestas direcionadas de cada vértice em a . Cada borda desse tipo tem capacidade .R t ctRtc
- Encontre o fluxo máximo de a .tst
O gráfico dado tem uma solução se e somente se o fluxo máximo calculado acima saturar todas as arestas de a , ou seja, o fluxo em todas as arestas de a é igual a .s L s L bGsLsLb