這種建模的方式挺經典的。。
對於最小費用化為兩個集合的 問題, 可以轉化為最小割。
然後如果屬於s,那麼就割掉到s的邊。。
還有就是在這裡的
模組組合 的概念。。。
要想切斷聯絡,就要付出費用,,所以 組合中的兩個頂點連邊
#include#include#include#include#include#include#includeusing namespace std;
#define mem(a,b) memset(a,b,sizeof(a));
#define sf scanf
#define pf printf
#define ll long long
#define bug1 cout<<"bug1"vectorg[maxn];
bool vis[maxn];
int d[maxn];
int cur[maxn];
void init(int n)
void clearflow()
void addedge(int from, int to, int cap) );
edges.push_back((edge));
m = edges.size();
g[from].push_back(m-2);
g[to].push_back(m-1);
} bool bfs() }}
return vis[t];
} int dfs(int x, int a)
}return flow;
} int maxflow(int s, int t)
return flow;
} vectormincut()
return ans;
} void reduce()
};dinic g;
int n,m;
int a[maxn*10],b[maxn*10];
int main()
for(int i=1;i<=m;++i)
int ans=g.maxflow(s,t);
pf("%d\n",ans);
}}
poj1459 網路流經典
題意 給幾個發電站,給幾個消耗站,再給幾個 點。發電站只發電,消耗站只消耗電,點只是 電,再給各個傳送線的傳電能力。問你消耗站能獲得的最多電是多少。思路 增加乙個超級源點,和超級匯點。把所給的發電站都和超級源點相連,把所給的消耗戰都和超級匯點相連。用ek求最大流。include include us...
挑戰408 一周網路 網路層(1)
網路層應該向運輸層提供什麼樣的服務?網際網路採用的思路是這樣的 網路層向上只提供簡單靈活的,無連線的,盡最大努力交付的資料報 這裡的資料報就是ip分組 服務。網路層不提供服務質量的承諾,也就是說,所傳送的分組可能出錯,可能丟失也可能重複或者失序。網際協議ip是是tcp ip協議中最重要的兩個協議之一...
挑戰408 一周網路 網路層(2)
ip位址空間利用率低。試想a類位址能表示 2 31 個網路位址,全球的主機數遠不止如此。每個物理網路都分配乙個網路號,會使得路由表過大。二級位址不夠靈活。劃分子網就是為了解決這些問題的。具體的思路如下 注意 劃分子網是在原來的ip位址的主機號進行劃分,而不改變ip位址原有的網路號。子網掩碼 那麼資料...