題目:
以人和衣服作為點,建立超級源點和超級匯點,人連邊權為1的邊,衣服對源點連邊權為件數的邊(別弄亂順序);
試圖寫建構函式,但ce了,最後只好用冗雜的寫法。
**如下:
#include#include#include
#include
using
namespace
std;
queue
q;int n,head[30],ct=1,d[30],cur[30],inf=1e9,s,t;
char dc[105
];struct
nedge[
705];
//struct n
//}edge[255];
int ex(char
cc)void ad(int x,int y,int
z);head[x]=ct;
//edge[++ct]=(n);head[y]=ct;
edge[++ct].to=y;
edge[ct].next=head[x];
edge[ct].w=z;
head[x]=ct;
edge[++ct].to=x;
edge[ct].next=head[y];
edge[ct].w=0
; head[y]=ct;
//edge[++ct]=n;head[x]=ct;
//edge[++ct]=n;head[y]=ct;
}void add(int p,char
c)bool
bfs()}}
return
d[t];
}int dfs(int x,int
f) }
if(!res)d[x]=0;//
剪枝 return
res;
}bool
dinic()
if(ret==n)return1;
else
return0;
}int
main()
for(int i=n+1;i<=n+5;i++)
for(int i=1;i<=n;i++)ad(i,n+6,1);//
n+6為超級匯點
s=0;t=n+6
; cin>>dc;
if(dinic())printf("
t-shirts rock!\n");
else printf("
i'd rather not wear a shirt anyway...\n");
}return0;
}
POJ 1273 模板網路流
drainage ditches 標準的是edmonds karp 最短增廣路演算法 網路流講解 include include include include include includeusing namespace std define rep i,a,b for int i a i b i...
poj 3469 dinic網路流模板
題意 要在由核a和核b組成的雙核cpu上執行n個模組。模組i在核a上執行的花費為ai,在核b上執行的花費為bi。有m個相互之間需要進行資料交換的模組組合 ai,bi 如果這倆模組在同一核上執行則沒有花費。否則會產生wi的花費。計算執行所有模組所需的最小花費。解析 用最小的費用將物件花費成兩個集合的問...
No 25 POJ3308 實數網路流
構造圖是關鍵 乙個兵有兩種耗費模式,要麼ri開銷,要麼cj開銷 自然想到源點到中間節點為ri開銷,中間節點到匯點為cj開銷,求最小割。兵的關係如何表示?傘兵沒有帶權值,所以只表示一種行和列的關聯關係,所以想到中間節點分為ri和cj,每個傘兵鏈結ri和cj,正向邊費用為inf,反向邊費用為0。關 於反...