Dolphins의 HelloWorld

[백준]Baekjoon11725 (트리의 부모 찾기) 본문

Algorithm/baekjoon문제풀이

[백준]Baekjoon11725 (트리의 부모 찾기)

돌핀's 2018. 8. 22. 13:54

문제 링크 : https://www.acmicpc.net/problem/11725



#include <iostream>
#include <vector>
#include <queue>

#define SIZE 100001

using namespace std;

vector<int> tree[SIZE]; //주어진 트리
int ans[SIZE]; //ans[i]는 i 노드의 값을 의미
bool check[SIZE]; //방문한 노드를 check

void function()
{
	queue<int> q;
	q.push(1); // node 1 부터 시작하므로 큐에 push
	check[1] = true; //1번 노드는 방문했으므로 check
	while (!q.empty())
	{
		int x = q.front();
		q.pop(); //큐에서 하나 꺼냄
		
		for (int i = 0; i < tree[x].size(); i++)
		{
			if (!check[tree[x][i]]) //만약 이어진 노드가 방문한 노드가 아니라면
			{
				int next = tree[x][i];
				ans[next] = x; //next 노드의 부모는 x
				check[next] = true; //next노드를 방문했으므로 true로 설정
				q.push(next); //next 노드를 큐에 집어넣는다.
			}
		}
	}
}
int main()
{
	int N;
	scanf("%d", &N);
	int node_num = N--;
	int u, v;
	while (N--)
	{
		scanf("%d %d", &u, &v);
		tree[u].push_back(v);
		tree[v].push_back(u);
	}
	function();
	for (int i = 2; i <= node_num; i++)
		printf("%d\n", ans[i]);
}


'Algorithm > baekjoon문제풀이' 카테고리의 다른 글

[백준]Baekjoon11047(Greedy Algorithm)  (0) 2018.08.28
[백준]Baekjoon1967 (트리의 지름)  (0) 2018.08.22
[백준]Baekjoon2146(DFS,BFS)  (0) 2018.08.17
[백준]Baekjoon7576(BFS)  (0) 2018.08.16
[백준]Baekjoon2178(BFS)  (0) 2018.08.16
Comments