我說比較重點的思路
// 讀取邊的訊息並建構鄰接表
for(int i = 0;i<m;i++){
int a,b;
cin >> a>> b;
//無向圖需要雙向添加
graph[a].push_back(b);
graph[b].push_back(a);
} 雙向很重要因為題目中有特別提到
//檢查是不是二分圖
bool isBipartite = true;
for(int i =0;i< n;i++){
if(colors[i] == -1){
// 顏色0 DFS
if(!dfs(i, 0)){
isBipartite = false;
break; //發現衝突,提前結束
}
}
} 用函式去檢查她我的顏色是只有0 1
思路大概是這樣DFS就是遞迴加上回朔