0
点赞
收藏
分享

微信扫一扫

JAVA 39

爪哇驿站 2022-03-14 阅读 87
java
int tempValue;
		int[] tempInDegree = new int[numNodes];
		for (int i = 0; i < numNodes; i++) {
			for (int j = 0; j < tempInDegree.length; j++) {
				if (weightMatrix.getData()[i][j] != -1) {
					tempInDegree[j]++;
				} // Of if
			} // Of for j
		} // Of for i
		System.out.println("In-degree of nodes: " + Arrays.toString(tempInDegree));

		int[] tempEarlistArray = new int[numNodes];
		for (int i = 0; i < numNodes; i++) {
			if (tempInDegree[i] > 0) {
				continue;
			} // Of if

			System.out.println("Removing " + i);
			for (int j = 0; j < numNodes; j++) {
				if (weightMatrix.getData()[i][j] != -1) {
					tempInDegree[j]--;
					tempValue = tempEarlistArray[i] + weightMatrix.getData()[i][j];
					if (tempValue > tempEarlistArray[j]) {
						tempEarlistArray[j] = tempValue;
					} // Of if
				} // Of if
			} // Of for j
		} // Of for i

		System.out.println("Earlest start time: " + Arrays.toString(tempEarlistArray));

		int[] tempOutDegree = new int[numNodes];
		for (int i = 0; i < numNodes; i++) {
			for (int j = 0; j < numNodes; j++) {
				if (weightMatrix.getData()[i][j] != -1) {
					tempOutDegree[i]++;
				} // Of if
			} // Of for j
		} // Of for i

		System.out.println("Out-degree of nodes: " + Arrays.toString(tempOutDegree));

		int[] tempLatestArray = new int[numNodes];
		for (int i = 0; i < numNodes; i++) {
			tempLatestArray[i] = tempEarlistArray[numNodes - 1];
		} // of for i

		for (int i = numNodes - 1; i >= 0; i--) {
			if (tempOutDegree[i] > 0) {
				continue;
			} // Of if

			System.out.println("Removing " + i);

			for (int j = 0; j < numNodes; j++) {
				if (weightMatrix.getData()[j][i] != -1) {
					tempOutDegree[j]--;
					tempValue = tempLatestArray[i] - weightMatrix.getData()[j][i];
					if (tempValue < tempLatestArray[j]) {
						tempLatestArray[j] = tempValue;
					} // Of if
					System.out.println("The out-degree of " + j + " decreases by 1.");
				} // Of if
			} // Of for j
		} // Of for i

		System.out.println("Latest start time: " + Arrays.toString(tempLatestArray));

		boolean[] tempVisteArray = new boolean[numNodes];
		for (int i = 0; i < numNodes; i++) {
			if (tempEarlistArray[i] == tempLatestArray[i]) {
				tempVisteArray[i] = true;
			} // Of if
		} // Of for i

		System.out.println("Critical array: " + Arrays.toString(tempVisteArray));
		System.out.print("Critical nodes: ");
		for (int i = 0; i < numNodes; i++) {
			if (tempVisteArray[i]) {
				System.out.print(" " + i);
			} // Of if
		} // Of for i
		System.out.println();

		return tempVisteArray;

注意改变的入度出度。

举报

相关推荐

0 条评论