沙雕題,建圖很簡單。
跑一遍最小費用,再把邊權取反重跑一遍最小費用。
#include #define rep(i, a, b) for(int i = (a); i <= (b); i++)
using namespace std;
const int n = 250;
int n,m,s,t,tot;
int head[n];
struct nodeedge[int(2e5+100)];
int dis[n],pre[n],last[n],flow[n],maxflow,mincost; //pre:前驅結點 last:每個點所連的前一條邊 flow:源點到該點的流量
bool vis[n];
void ae(int u,int v,int cap,int cost);
head[u] = tot;
}bool spfa() }}
}return pre[t] != -1;
}void dinic()
}return ;
}void init()
int s[110][110];
int main()
rep(i, 1, n)
dinic();
printf("%d\n",mincost);
init();
s = 0;
t = 2*n+1;
rep(i, 1, n)
rep(j, 1, n)
rep(i, 1, n)
dinic();
printf("%d\n",-mincost);
return 0;
}
網路流24題 分配問題
時空限制1000ms 256mb 有 n件工作要分配給 n個人做。第 i個人做第 j件工作產生的效益為 c i j 試設計乙個將 n件工作分配給 n個人做的分配方案,使產生的總效益最大。輸入格式 檔案的第 1行有 1 個正整數 n 表示有 n 件工作要分配給 n 個人做。接下來的 n行中,每行有 n...
題解 網路流24題之分配問題
傳送門 分配問題就是將人和工作分開來做匹配,但是與一般的二分圖匹配不同的是,每個匹配都是有權值的。這個問題就是二分圖最大權完美匹配問題。雖然這個問題可以用二分圖最大權完美匹配的專門演算法km演算法解決,但是這裡只講網路流解法。首先發現人和工作的下標都是1 n的,直接建圖會產生歧義,於是我們可以定義人...
網路流24題18 分配問題
有 n 件工作要分配給 n 個人做。第 i 個人做第 j 件工作產生的效益為ci j 試設計乙個將n 件工作分配給 n 個人做的分配方案,使產生的總效益最大。對於給定的 n 件工作和 n 個人,計算最優分配方案和最差分配方案。第 1 行有 1 個正整數 n,表示有 n 件工作要分配給 n 個人做。接...