DOTY

13) 백준 18352 - 특정 거리의 도시 찾기 본문

Algorithm/BFS&DFS

13) 백준 18352 - 특정 거리의 도시 찾기

증식세포 2023. 3. 9. 16:20
728x90
반응형

18352번: 특정 거리의 도시 찾기 (acmicpc.net)

 

18352번: 특정 거리의 도시 찾기

첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개

www.acmicpc.net


BFS였는데 왜이리 안풀리지 했는데 잔오류가 너무 많았었다

#include <bits/stdc++.h>

using namespace std;

int city[300001];
int check[300001];

int main(void) {
	int N, M, K, X;
	cin >> N >> M >> K >> X;

	fill_n(check, 300001, 0);
	fill_n(city, 300001, 0);
	vector<vector<int>> city(300001);
	
	int A, B;
	for(int i = 0; i < M; i++) {
		cin >> A >> B;
		city[A].push_back(B);
	}
	
	queue<int> q;
	q.push(X);
	check[X] = 1;
	
	int cnt = 0;
	int q_size = q.size();
	
	while(!q.empty()) {
		if(q_size == 0) {
			q_size = q.size();
			cnt++;
		}
		
		if(cnt == K) {
			break;
		}
		
		int start_point = q.front();
		q.pop();
		q_size--;
		
		for(int i = 0; i < city[start_point].size(); i++) {
			if(check[city[start_point][i]] == 0) {
				check[city[start_point][i]] = 1;
				q.push(city[start_point][i]);
			}
		}
	}
	vector<int> v;
	if(q.empty()) {
		v.push_back(-1);
	}
	else {
		for(int i = 0; i < q_size; i++) {
			v.push_back(q.front());
			q.pop();
		}
	}
	
	sort(v.begin(), v.end());
	for(int i =0; i < v.size(); i++) {
		cout << v[i] << '\n';
	}
}

대체 "출력 오류" 왜 뜨지 했는데

문제를 똑바로 안읽었다. "단방향"이라고 적혀있었는데 왜 "양방향"으로 구현했는지..

심지어 테스팅 코드도 다 맞다고 뜨니까 껄껄.....

 

으이구 인간아 ᕙ( ︡’︡益’︠)ง

728x90
반응형

'Algorithm > BFS&DFS' 카테고리의 다른 글

15) 백준 12100 - 2048 (Easy)  (0) 2023.04.02
14) 백준 13023 - ABCDE  (0) 2023.03.30
12) 백준 2468 - 안전 영역  (0) 2023.02.26
11) 프로그래머스 Lv2 - 게임 맵 최단거리  (0) 2023.02.16
10) 백준 1012 - 유기농 배추  (0) 2023.01.23
Comments