來自京東筆試題,題目如下:
給定一張包含N個點、M條邊的無向圖,每條邊連接兩個不同的點,且任意兩點間最多隻有一條邊。對於這樣的簡單無向圖,如果能將所有點劃分成若干個集合,使得任意兩個同一集合內的點之間沒有邊相連,任意兩個不同集合內的點之間有邊相連,則稱該圖爲完全多部圖。現在你需要判斷給定的圖是否爲完全多部圖。
這裏是我堯師弟的思路,我總結一下,僅供大家參考:
1、通過題目已知:沒有邊的兩個點一定在同一個集合內;
2、求此完全多部圖相對於完全圖的補圖(此補圖中,存在邊的兩個點屬於同一集合);
3、遍歷步驟2中的補圖,將相連的結點放在同一個集合中;
4、計算步驟3中得到的集合之間邊的總和,是否和給定的圖中邊數相同,相同則爲yes,否則爲no。