標準10451シーケンスループjava
10480 ワード
質問リンク
これは初めて解決した幹線図探索問題である.初めての解であるが,既存のdfsやbfsと隣接行列を描く場合,方向検査の方法を除いては大きな差はない.独立シーケンスのループを解くためにdfs()関数を呼び出すとcountを計算しcountを出力することによって解く.
問題を解く
これは初めて解決した幹線図探索問題である.初めての解であるが,既存のdfsやbfsと隣接行列を描く場合,方向検査の方法を除いては大きな差はない.独立シーケンスのループを解くためにdfs()関数を呼び出すとcountを計算しcountを出力することによって解く.
コード#コード#
import java.util.*;
public class Main {
static boolean[][] map;
static boolean[] visit;
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for(int i=0; i<t;i++){
int count=0;
int n = sc.nextInt();
map = new boolean[n+1][n+1];
visit = new boolean[n+1];
for(int x=1;x<=n;x++){
int to = sc.nextInt();
map[x][to]=true;
}
for(int x=1;x<=n;x++){
if(!visit[x]){
count++;
dfs(x, n);
}
}
System.out.println(count);
}
}
static void dfs(int i, int n){
Queue<Integer> q = new LinkedList<>();
q.offer(i);
visit[i]=true;
while(!q.isEmpty()){
int tmp = q.poll();
for(int j=1;j<=n;j++){
if(map[tmp][j]&&!visit[j]){
visit[j]=true;
q.offer(j);
}
}
}
}
}
Reference
この問題について(標準10451シーケンスループjava), 我々は、より多くの情報をここで見つけました https://velog.io/@kiki3700/백준-10451-순열-사이클-자바テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol