網路流最小費用問題
一開始看這個人的部落格:
寫了4天了,還是沒能寫出自己的**。。。
後面面還有在這個oj上ac了的**。
照著這個人的**打,還是沒能想明白。。這個**和這個oj上的不同,是簡化問題了的。只求最大收益
照著打的**:
#include#include#include#include#define inf 999999
using namespace std;
//分別為殘餘網路,返回值,當前列舉的點,當前點的前驅,當前點到匯點的距離,距離為i的點數
int a[500][500],fh[500],now[500],pre[500],dis[500],sumd[500];
int n,m,ans; //儀器數,實驗數,收入
queueq;
void cl()
void input()
}for(i = m+1; i <= n+m; i++)
n = m+n+1; //匯聚點更改
return ;
}void sap()
int sap()
gap[src] = n;
x = pre[src] = src;
while (dis[src] < n)
aug = oo;
}break;}}
if (flag)
int tmp = n;
for (int j = first[x]; j != -1; j = next[j])
}if ((--gap[dis[x]]) == 0)
gap[dis[x] = tmp + 1]++;
x = pre[x];
}return flow;
}void out(vectorres)
printf("%d", res[i]);
}putchar('\n');
}void dfs(int x)
for (i = first[x]; i != -1; i = next[i])
}}int main()
for (; j < len && isdigit(str[j]); j++);}
}for (i = 1; i <= n; i++)
ans = 0;
for (i = 1; i <= m; i++)
}n = des + 1;
ans -= sap();
test.clear();
for (i = first[src]; i != -1; i = next[i])}}
out(test);
printf("%d\n", ans);
}return 0;
}
太空飛行計畫問題
w 教授正在為國家航天中心計畫一系列的太空飛行。每次太空飛行可進行一系列商業性實驗而獲取利潤。現已確定了乙個可供選擇的實驗集合 e 和進行這些實驗需要使用的全部儀器的集合i 實驗 ej需要用到的儀器是i的子集j i。配置儀器ik的費用 為ck美元。實驗ej的贊助商已同意為該實驗結果支付pj美元。w教...
太空飛行計畫問題
跟拍照幾乎是重題。在輸出部分,若最後一次bfs還能到這個點,則可以輸出。只要有乙個點可以從源點過得去,就可以通過正或反流到達所有經過的點。但是我不明白若把所有專案都割掉了,那不就嘎嘎了。這裡也求廣大讀者說出自己的理解。看 includeusing namespace std define inf 1...
太空飛行計畫
太空飛行計畫 題目描述 輸入格式 2209.in 檔案第1行有2 個正整數m和 n。m是實驗數,n是儀器數。接下來的 m行,每行是乙個實驗的有關資料。第乙個數贊助商同意支付該實驗的費用 接著是該實驗需要用到的若干儀器的編號。最後一行的 n個數是配置每個儀器的費用。1 n,m 50 輸出格式 2209...