本文共 1605 字,大约阅读时间需要 5 分钟。
package Graph;import java.util.ArrayDeque;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class IsToColor { boolean isTwoColor = true; LinkedList[]map; boolean []visit; boolean[]color; int v, e; public static void main(String[] args) { IsToColor dfs = new IsToColor(); dfs.run(); for(int i = 0; i < dfs.v; i++ ) { dfs.dfs(i); } System.out.println(dfs.isTwoColor); IsToColor bfs = new IsToColor(); bfs.run(); for(int i = 0; i < bfs.v; i++ ) { bfs.bfs(i); } System.out.println(bfs.isTwoColor); } public void run() { Scanner in = new Scanner(System.in); v = in.nextInt(); e = in.nextInt(); map = new LinkedList[v]; visit = new boolean[v]; color = new boolean[v]; for(int i = 0; i < map.length; i++ ) { map[i] = new LinkedList<>(); } for(int i = 0; i < e; i++ ) { int a = in.nextInt(); int b = in.nextInt(); map[a].offer(b); map[b].offer(a); } } public void dfs(int cur) { visit[cur] = true; for(int i = 0; i < map[cur].size(); i++ ) { int w = map[cur].get(i); if(!visit[w]) { color[w] = !color[cur]; dfs(w); } else if(color[w] == color[cur]) { isTwoColor = false; return; } } } public void bfs(int start) { Queue que = new LinkedList<>(); que.offer(start); visit[start] = true; while(!que.isEmpty()) { int cur = que.poll(); for(int i = 0; i < map[cur].size(); i++ ) { int w = map[cur].get(i); if(!visit[w]) { visit[w] = true; color[w] = !color[cur]; que.offer(w); } else if(color[w] == color[cur]){ isTwoColor = false; return; } } } }}
转载地址:http://ylimi.baihongyu.com/