BOJ-9466基準項目
11948 ワード
質問する
T
はN
が与えられる.std
.に答える
Cycleを構成しないノードを出力する方法を定義します.
(indegree - 1)
となりループがないことを示すため,キューに入れて探索を継続する.上記の手順を繰り返して、cycleが存在しないすべてのノードを参照します.これは、問題にチームを構成していない人を探索し、これらのノードの数を数え、答えを出力することができることを意味します.
コード#コード#
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
while (T -- > 0) {
int N = Integer.parseInt(br.readLine());
int[] std = new int[N + 1];
int[] indegree = new int[N + 1];
String[] selectList = br.readLine().split(" ");
for (int ii = 1; ii < N + 1; ii ++) {
std[ii] = Integer.parseInt(selectList[ii - 1]);
indegree[std[ii]] ++;
}
//then
LinkedList<Integer> queue = new LinkedList<>();
int answer = 0;
for (int ii = 1; ii < N + 1; ii ++) {
if (indegree[ii] == 0) queue.offer(ii);
}
while(!queue.isEmpty()) {
int current = queue.poll();
int next = std[current];
indegree[next] -= 1;
if (indegree[next] == 0) queue.offer(next);
answer ++;
}
System.out.println(answer);
}
}
}
https://www.acmicpc.net/source/28130292Reference
この問題について(BOJ-9466基準項目), 我々は、より多くの情報をここで見つけました https://velog.io/@noneobj/BOJ-9466-텀-프로젝트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol