BFS
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static Queue<Integer> q = new LinkedList<>();
static int[][] network;
static int[] c;
static int com, conn, cnt=0,x,y;
public static void BFS(){
q.add(1);
c[1]=1;
while(!q.isEmpty()){
int temp = q.peek();
q.poll();
for(int i=1;i<=com;i++){
if(network[temp][i] ==1){
if(c[i]==1){
continue;
}else{
c[i]=1;
q.add(i);
cnt++;
}
}
}
}
}
public static void main(String args[])throws IOException{
com = Integer.parseInt(br.readLine());
conn = Integer.parseInt(br.readLine());
network = new int[com+1][com+1];
c = new int[com+1];
for(int i=1;i<=com;i++){
c[i] = 0;
}
for(int i=1;i<=conn;i++){
st = new StringTokenizer(br.readLine()," ");
x = Integer.parseInt(st.nextToken());
y = Integer.parseInt(st.nextToken());
network[x][y]=1;
network[y][x]=1;
}
BFS();
System.out.println(cnt);
}
}
DFS
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static Queue<Integer> q = new LinkedList<>();
static int[][] network;
static int[] c;
static int com, conn, cnt=0,x,y;
public static void DFS(int s){
if(c[s]==1){
return;
}
if(c[1]==1){
cnt++;
}
c[s]=1;
for(int i=1;i<=com;i++){
if(network[s][i]==1){
DFS(i);
}
}
}
public static void main(String args[])throws IOException{
com = Integer.parseInt(br.readLine());
conn = Integer.parseInt(br.readLine());
network = new int[com+1][com+1];
c = new int[com+1];
for(int i=1;i<=com;i++){
c[i] = 0;
}
for(int i=1;i<=conn;i++){
st = new StringTokenizer(br.readLine()," ");
x = Integer.parseInt(st.nextToken());
y = Integer.parseInt(st.nextToken());
network[x][y]=1;
network[y][x]=1;
}
DFS(1);
System.out.println(cnt);
}
}
탐색알고리즘 BFS,DFS연습으로 두번풀어봤다.