poj 1469 COURSES 解題報告

2022-06-10 14:51:07 字數 798 閱讀 2161

題目意思:有 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 4

using

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為總共有多少個.然後每一位就依次求出前一位...