-
Notifications
You must be signed in to change notification settings - Fork 7
/
Program.cs
58 lines (56 loc) · 1.84 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//创建Garden类,属性包括GardenNo,Flowers代表现有能种的花,Adjacent代表互通的Garden。
//创建graph为一个长度为N的Garden数组。根据graph将与当前Garden相连的Garden加入Adjacent。
//遍历res,将res[i]设为当前garden第一个能种的花,并将这种花从当前garden相邻garden的flower列表中删去。
using System;
using System.Collections.Generic;
namespace FlowerPlantingWithNoAdjacent
{
class Garden
{
public int GardenNo;
public List<Garden> Adjacent;
public List<int> Flowers;
public Garden(int x)
{
GardenNo = x;
Adjacent = new List<Garden>();
Flowers = new List<int> { 1, 2, 3, 4 };
}
}
class Program
{
static void Main(string[] args)
{
int N = 3;
int[][] paths = new int[3][]
{
new int[]{1, 2},
new int[]{2, 3},
new int[]{3, 1}
};
Console.WriteLine(GardenNoAdj(N, paths));
}
static int[] GardenNoAdj(int N, int[][] paths)
{
var graph = new Garden[N];
var res = new int[N];
for (int i = 0; i < graph.Length; i++)
graph[i] = new Garden(i);
foreach (var path in paths)
{
var garden1 = graph[path[0] - 1];
var garden2 = graph[path[1] - 1];
garden1.Adjacent.Add(garden2);
garden2.Adjacent.Add(garden1);
}
for (int i = 0; i < res.Length; i++)
{
var flower = graph[i].Flowers[0];
res[i] = flower;
foreach (var garden in graph[i].Adjacent)
garden.Flowers.Remove(flower);
}
return res;
}
}
}