題目意思:有 n 個人,p個課程,每乙個課程有一些學生參加(0個、1個或多個參加)。問 能否使得 p 個課程 恰好與 p 個學生相匹配。
受之前第一道匹配題(poj 1274 the perfect stall)的影響,沒有仔細體會是從哪個點匹配到哪個點,這將導致hungary() 和 dfs() 中 for 迴圈的約束條件,究竟是遍歷課程數 p 還是 學生數n,不要搞混!其實從儲存的map[i][j] 可以 知道 怎樣遍歷的啦 ^_^
1 #include 2 #include 3 #include 4using
namespace
std;56
const
int maxn = 300 + 5;7
bool
vis[maxn];
8int
map[maxn][maxn], match[maxn];
9int
n, p, cnt;
1011
int dfs(int
x)1224}
25}26return0;
27}2829
void
hungary()
3037}38
39int
main()
4058}59
hungary();
60 printf("
%s\n
", cnt == p ? "
yes" : "no"
);61}62
}63return0;
64 }
POJ 1469 COURSES 解題報告
求二分圖最大匹配題。題意 有n個學生和p個課程。每個學生都能選擇任意多個課程,也可以不選擇課程。你的任務是確定是否有可能組成這樣的乙個委員會使得 1.每乙個委員會裡的學生都代表一門不同的課程 前提是這個學生選了這門課程 2.每個課程在委員會裡都有且只有乙個代表 現在給你每個學生選擇的課程,如果能組成...
POJ 1469 COURSES 完備匹配
題意 給定一些學生和課程的關係,問是否每一門課程能唯一對應乙個學生。解法 每一條邊對應乙個選擇關係,問題就是求乙個完備匹配是否存在。如下 include include include include include using namespace std intp,n char g 105 305...
POJ 1469 排列組合的思維
題意就是說給一列序列.其順序是 1 a 2 b 26 z 27 ab.28 ac.51 az.52 bc.類似這樣.其中的字串都是每一位比前一位大.最長為vwxyz.給出乙個字串.求出其在佇列中的序列號.這道題就是用乙個排列組合.比如求 bdf 求出1位和2為總共有多少個.然後每一位就依次求出前一位...