---
title: 1042. Flower Planting With No Adjacent
tags: graph
description: share source code.
---
# 1042. Flower Planting With No Adjacent
```java=
class Solution {
public int[] gardenNoAdj(int n, int[][] paths) {
List<Integer>[] path = new ArrayList[n];
Arrays.setAll(path, v -> new ArrayList<>());
for(int [] p : paths){
path[p[0] - 1].add(p[1] - 1);
path[p[1] - 1].add(p[0] - 1);
}
int colors [] = new int [n];
Arrays.fill(colors, -1);
boolean used [] = new boolean [n + 1];
for(int i = 0; i < n; i++){
if(colors[i] == -1){
dfs( path , i, -1, colors, used, n);
}
}
return colors;
}
public void dfs(List<Integer>[] path , int u, int p, int [] colors, boolean [] used, int n){
boolean temp [] = new boolean [5];
for(int v_ : path[u]){
if(colors[v_] == -1){
continue;
}
temp[colors[v_]] = true;
}
for(int i = 1; i <= 4; i++){
if(!temp[i]){
colors[u] = i;
}
}
for(int v : path[u]){
if(v == p || p == -1)
continue;
dfs(path , v, u , colors, used, n);
}
}
}
```