座位安排
二分圖,人為左部點,座位為右部點,由於每個座位可以坐兩個人,所以把每個座位拆成兩個點\(i\)和\(i+n\),如果乙個人想去這個座位則向這兩個點連邊,跑匈牙利即可。
#include#define n (100000+5)
using namespace std;
inline int read()
while(isdigit(c))
return cnt*f;
}int n,match[n],x,y,nxt[n],first[n],to[n],tot,ans,res;
bool vis[n];
void add(int x,int y)
int find(int u)
} }return 0;
}int hungary()
return ans;
}int main()
int res=hungary();
printf("%d",res);
return 0;
}
luogu P2071 座位安排
已知車上有n排座位,有n 2個人參加省賽,每排座位只能坐兩人,且每個人都有自己想坐的排數si1和si2,問最多使多少人坐到自己想坐的位置。題目 並木有坑人,這題就是乙個二分圖的最大匹配,一邊放人,一邊放座位的排數,注意對於乙個座位是可以承載2個人的,所以乙個人i應該可以在作為si1和si2中分別有2...
luogu P2071 座位安排
這個題可以被分為兩部分 1.匈牙利演算法 板子 2.鄰接表存圖 好像這不能稱為第二部分 每一排能坐兩個人,那就把一排拆成兩個點,用匈牙利演算法求最大匹配 每個人都只想坐兩排,說明每個人只會連四條邊 如果不會匈牙利的請點這裡 includeusing namespace std const int n...
數學 AOJ 614 座位安排
description 宣講會上有連續編號為1.n的n個座位,每個座位只能坐乙個人,有n個人,學校有m個不同專業,如果相鄰座位的同學的專業相同,就會發生悄悄話現象,求有多少種情況可能發生悄悄話現象。不一定每個專業都有人來 input 輸入包括多組資料,以檔案 eof 結束。每組測試資料兩個整數n 1...