๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/13265)
< ์์น ํ๊ธฐ >
๋ฌธ์ ํ์ด
bfs๋ฅผ ํ์ฉํ๋ฉด์ ์ ๋๊ทธ๋ผ๋ฏธ์ ๋ค๋ฅธ ์์ ์น ํ ์ ์๋์ง ์๋์ง๋ฅผ ํ๋ณํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class _13265_ { // ์์น ํ๊ธฐ
static ArrayList<ArrayList<Integer>> arr;
static int check[];
static boolean flag;
public static void main(String[] args) throws IOException {
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int t=Integer.parseInt(bf.readLine());
for(int i=0; i<t; i++) {
st=new StringTokenizer(bf.readLine());
int n=Integer.parseInt(st.nextToken()); // ๋๊ทธ๋ผ๋ฏธ ๊ฐ์
int m=Integer.parseInt(st.nextToken()); // ์ง์ ๊ฐ์
arr=new ArrayList<>();
check=new int[n];
flag=false;
for(int j=0; j<n; j++) {
arr.add(new ArrayList<>());
check[j]=-1;
}
for(int j=0; j<m; j++) {
st=new StringTokenizer(bf.readLine());
int x=Integer.parseInt(st.nextToken())-1;
int y=Integer.parseInt(st.nextToken())-1;
arr.get(x).add(y);
arr.get(y).add(x);
}
for(int j=0; j<n; j++) {
if(check[j]==-1) {
check[j]=0;
bfs(j);
}
}
if(flag) System.out.println("impossible");
else System.out.println("possible");
}
}
private static void bfs(int j) {
Queue<Integer>queue=new LinkedList<>();
queue.add(j);
while(!queue.isEmpty()) {
int num=queue.poll();
for(int i=0; i<arr.get(num).size(); i++) {
if(check[arr.get(num).get(i)]==-1) {
if(check[num]==0) {
check[arr.get(num).get(i)]=1;
queue.add(arr.get(num).get(i));
}
else if(check[num]==1) {
check[arr.get(num).get(i)]=0;
queue.add(arr.get(num).get(i));
}
}else if(check[arr.get(num).get(i)]==0) {
if(check[num]!=1) {
flag=true;
return;
}
}else if(check[arr.get(num).get(i)]==1) {
if(check[num]!=0) {
flag=true;
return;
}
}
}
}
}
}
Main
- ํ ์คํธ ์ผ์ด์ค ๊ฐ์(t) ์ ๋ ฅ
- ๋๊ทธ๋ผ๋ฏธ ๊ฐ์(n), ์ง์ ๋ค์ ๊ฐ์(m) ์ ๋ ฅ
- arr : ์ธ์ ๋ฆฌ์คํธ
check : ๋๊ทธ๋ผ๋ฏธ ์์
flag : ์์น ๊ฐ๋ฅ ์ฌ๋ถ
- ์ง์ ๋ค์ ๊ฐ์(m) ๋งํผ ์ ๋ ฅํ์ฌ ์ธ์ ๋ฆฌ์คํธ ์ ๋ณด ์ ์ฅ
- ๋๊ทธ๋ผ๋ฏธ ์ ์ฒด๋ฅผ ํ์ํ๋ฉฐ ์์ง ์์น ํ์ง ์์ ๋๊ทธ๋ผ๋ฏธ์ธ ๊ฒฝ์ฐ ์์น ํ bfs ํจ์ ํธ์ถ
- flag ๊ฐ์ ๋ฐ๋ผ result ์ถ๋ ฅ
bfs
- queue์ ๋๊ทธ๋ผ๋ฏธ ์์ ๋ฒํธ ์ ์ฅ
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต -> ํ์ฌ ๋๊ทธ๋ผ๋ฏธ์ ์ธ์ ๋ ๋๊ทธ๋ผ๋ฏธ๋ฅผ ํ์ -> ์ธ์ ๋ ๋๊ทธ๋ผ๋ฏธ๊ฐ ์์ง ์์น ํ์ง ์์ ๋๊ทธ๋ผ๋ฏธ(๊ฐ์ด -1)๋ผ๋ฉด ํ์ฌ ๋๊ทธ๋ผ๋ฏธ์ ๋ค๋ฅธ ์์ผ๋ก ์์น ํ queue์ ์ ์ฅ / ์ธ์ ๋ ๋๊ทธ๋ผ๋ฏธ๊ฐ ์ด๋ฏธ ์์น ๋ ๋๊ทธ๋ผ๋ฏธ๋ผ๋ฉด ํ์ฌ ๋๊ทธ๋ผ๋ฏธ์ ๋ค๋ฅธ ์์ธ์ง ํ๋ณ. ๊ฐ์ ์์ด๋ผ๋ฉด flag๋ฅผ true๋ก ์ ์ฅ ํ ์ข ๋ฃ
์๊ฐ๐ค
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 7662_์ด์ค ์ฐ์ ์์ ํ (0) | 2023.06.19 |
---|---|
[Baekjoon] 19538_๋ฃจ๋จธ (0) | 2023.06.15 |
[Baekjoon] 11060_์ ํ ์ ํ (0) | 2023.06.12 |
[Baekjoon] 26169_์ธ ๋ฒ ์ด๋ด์ ์ฌ๊ณผ๋ฅผ ๋จน์ (0) | 2023.06.09 |
[Baekjoon] 24484_์๊ณ ๋ฆฌ์ฆ ์์ - ๊น์ด ์ฐ์ ํ์ 6 (0) | 2023.06.07 |