Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 2 KB
package hu.krivan.szakkor.tagok;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
@author
public class Company {
private int k;
private ArrayList<Integer>[] node;
private int[] order;
public Company(int k, String[] people) {
this.k = k;
node = new ArrayList[people.length + 1];
order = new int[people.length + 1];
String[] person = new String[3];
for (int i = 0; i < people.length; i++) {
person = people[i].split(" ");
if (node[Integer.valueOf(person[1]) - 1] == null) {
node[Integer.valueOf(person[1]) - 1] = new ArrayList<Integer>();
}
node[Integer.valueOf(person[1]) - 1].add(Integer.valueOf(person[0]) - 1);
order[Integer.valueOf(person[0]) - 1] = Integer.valueOf(person[2]);
}
}
public void inspect() throws IOException {
PrintWriter out = new PrintWriter(new FileWriter("tagok.ki"));
out.println(freeDirectSpotsUnder(0));
freeSpotsUnder2ndBosses(out);
out.close();
}
private void freeSpotsUnder2ndBosses(PrintWriter out) {
Integer[] result = new Integer[k];
if (node[0] != null) {
for (int boss : node[0]) {
result[order[boss] - 1] = freeSpotsBeyond(boss);
}
}
for (int i = 0; i < result.length; i++) {
if (i != 0) {
out.print(" ");
}
if (result[i] == null) {
out.print(0);
} else {
out.print(result[i]);
}
}
out.println();
}
private int freeDirectSpotsUnder(int i) {
if (node[i] == null) {
return k;
}
return k - node[i].size();
}
private int freeSpotsBeyond(int boss) {
ArrayList<Integer> queue = new ArrayList<Integer>();
queue.add(boss);
int res = 0;
while (!queue.isEmpty()) {
int employee = queue.remove(0);
if (node[employee] != null) {
queue.addAll(node[employee]);
}
res += freeDirectSpotsUnder(employee);
}
return res;
}
}