Skip to content

Commit 98066f9

Browse files
author
Steve Sun
committed
update Contest
1 parent 38c5470 commit 98066f9

File tree

1 file changed

+1
-112
lines changed

1 file changed

+1
-112
lines changed

src/main/java/com/fishercoder/solutions/Contest.java

Lines changed: 1 addition & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -15,119 +15,8 @@
1515

1616
public class Contest {
1717

18-
public int minNumberOfSemesters(int n, int[][] dependencies, int k) {
19-
int[] indegree = new int[n + 1];
20-
for (int[] prereq : dependencies) {
21-
indegree[prereq[1]]++;
22-
}
23-
Queue<Integer> zeroDegreeQueue = new LinkedList<>();
24-
for (int i = 1; i <= n; i++) {
25-
if (indegree[i] == 0) {
26-
zeroDegreeQueue.add(i);
27-
}
28-
}
29-
Map<Integer, Set<Integer>> map = new HashMap<>();
30-
for (int[] dep : dependencies) {
31-
if (!map.containsKey(dep[1])) {
32-
map.put(dep[1], new HashSet<>());
33-
}
34-
map.get(dep[1]).add(dep[0]);
35-
}
36-
int semesterCount = 0;
37-
int coursesToTakeThisSemester = 0;
38-
while (!zeroDegreeQueue.isEmpty()) {
39-
int size = zeroDegreeQueue.size();
40-
Set<Integer> removedAtThisLevel = new HashSet<>();
41-
for (int i = 0; i < zeroDegreeQueue.size() && coursesToTakeThisSemester < k; i++) {
42-
int course = zeroDegreeQueue.poll();
43-
removedAtThisLevel.add(course);
44-
coursesToTakeThisSemester++;
45-
for (int[] dep : dependencies) {
46-
if (dep[0] == course) {
47-
indegree[dep[1]]--;
48-
if (indegree[dep[1]] == 0) {
49-
zeroDegreeQueue.add(dep[1]);
50-
}
51-
}
52-
}
53-
if (coursesToTakeThisSemester >= k) {
54-
semesterCount++;
55-
coursesToTakeThisSemester = 0;
56-
break;
57-
} else if (i + 1 == size) {
58-
if (removedAtThisLevel.retainAll(map.get(zeroDegreeQueue.peek()))) {
59-
semesterCount++;
60-
coursesToTakeThisSemester = 0;
61-
break;
62-
} else {
63-
coursesToTakeThisSemester++;
64-
break;
65-
}
66-
}
67-
}
68-
removedAtThisLevel.clear();
69-
}
70-
semesterCount += coursesToTakeThisSemester > 0 ? 1 : 0;
71-
return semesterCount;
72-
}
73-
7418
public static void main(String... args) {
75-
System.out.println("Hello!");
76-
Contest contest = new Contest();
77-
// System.out.println(contest.minNumberOfSemesters(4, new int[][]{
78-
// {2, 1},
79-
// {3, 1},
80-
// {1, 4}
81-
// }, 2));//3
82-
//
83-
// System.out.println(contest.minNumberOfSemesters(5, new int[][]{
84-
// {2, 1},
85-
// {3, 1},
86-
// {4, 1},
87-
// {1, 5}
88-
// }, 2));//4
89-
//
90-
// System.out.println(contest.minNumberOfSemesters(4, new int[][]{
91-
// {2, 1},
92-
// {4, 3},
93-
// {1, 3},
94-
// {2, 3}
95-
// }, 4));//3
96-
//
97-
// System.out.println(contest.minNumberOfSemesters(8, new int[][]{
98-
// {1, 6},
99-
// {2, 7},
100-
// {8, 7},
101-
// {2, 5},
102-
// {3, 4}
103-
// }, 3));//3
104-
105-
// System.out.println(contest.minNumberOfSemesters(9, new int[][]{
106-
// {4, 8},
107-
// {3, 6},
108-
// {6, 8},
109-
// {7, 6},
110-
// {4, 2},
111-
// {4, 1},
112-
// {4, 7},
113-
// {3, 7},
114-
// {5, 2},
115-
// {5, 9},
116-
// {3, 4},
117-
// {6, 9},
118-
// {5, 7},
119-
// }, 2));//5
120-
121-
// Set<Coord> visited = new HashSet<>();
122-
// visited.add(new Coord(0, 0));
123-
// System.out.println(visited.contains(new Coord(0, 0)));
124-
//// System.out.println(contest.isPathCrossing("NES"));
125-
// System.out.println(contest.isPathCrossing("NSSEN"));
126-
// System.out.println(contest.canArrange(new int[]{1, 2, 3, 4, 5, 10, 6, 7, 8, 9}, 5));
127-
128-
// System.out.println(contest.getLastMoment(4, new int[]{4, 3}, new int[]{0, 1}));
129-
// System.out.println(contest.getLastMoment(7, new int[]{0,1,2,3,4,5,6,7}, new int[]{}));//7, correct
130-
System.out.println("Finished!");
19+
System.out.println("Finished.");
13120
}
13221

13322
}

0 commit comments

Comments
 (0)