題意:有P門課,每門課要找一個科代表組成一個委員會,保證每科的課代表不是同一個人,可以組成委員會輸出“YES”,否則輸出“NO”。
思路:二分圖匹配的裸題,匈牙利算法。
代碼:
#include #include #include #include #include #include #include #include #include #include #include #include #include #include r #define PI acos(-1.0) #define mem(a,b) memset(a,b,sizeof(a)) #define maxn 500 #define maxm 30005 using namespace std; int head[maxn]; int t_c,t_s; struct Edge { int v,w; int next; }edge[maxm]; int top=0; int add_edge(int u,int v) { edge[top].v=v; edge[top].next=head[u]; head[u]=top++; return 0; } int from[maxn],tt; bool use[maxn]; bool match(int x) { for(int i=head[x];i!=-1;i=edge[i].next) { int v=edge[i].v; if(!use[v]) { use[v]=1; if(from[v]==-1||match(from[v])) { from[v]=x; return true; } } } return false; } int hungary() { tt=0; mem(from,-1); for(int i=1;i<=t_c;i++) { mem(use,0); if(match(i)) tt++; } return tt; } int init() { mem(head,-1); top=0; return 0; } int main() { int tot; scanf(%d,&tot); while(tot--) { init(); scanf(%d%d,&t_c,&t_s); for(int ii=1;ii<=t_c;ii++) { int t; scanf(%d,&t); for(int i=0;i
問題 某海量用戶網站,用戶擁有積分,積分可能會在使用過
此博文主要講述了構造二叉樹的兩種方法: 1、通過先序和
HDOJ 5071 Chat 模擬 大模擬: 1》
多線程公用對象釋放,多線程公用對象同樣是在一個面試中被問及在
博弈,博弈論 所謂博弈,就是兩人輪流進行決策,並
get_class_methods vs Reflec