1일1알

백준 14675번 단절점과 단절선 C++ 본문

알고리즘

백준 14675번 단절점과 단절선 C++

영춘권의달인 2023. 5. 26. 12:40

https://www.acmicpc.net/problem/14675

 

14675번: 단절점과 단절선

프로그램의 입력은 표준 입력으로 받는다. 입력의 첫 줄에는 트리의 정점 개수 N이 주어진다. (2 ≤ N ≤ 100,000) 트리의 정점은 1번부터 n번까지 존재한다. 다음 줄부터 N-1개의 줄에 걸쳐 간선의 정

www.acmicpc.net

 

트리에서는 단절점과 단절선의 조건이 아래와 같다.

단절점 : 리프 노드가 아니면 전부 단절점이다.

단절선 : 모든 선이 단절선이다.

 

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <list>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <limits.h>

using namespace std;
using int64 = long long;

int n, q;
vector<vector<int>> tree;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin >> n;
    tree = vector<vector<int>>(n + 1, vector<int>());
    for (int i = 0; i < n - 1; i++) {
        int a, b;
        cin >> a >> b;
        tree[a].push_back(b);
        tree[b].push_back(a);
    }
    cin >> q;
    for (int i = 0; i < q; i++) {
        int t, k;
        cin >> t >> k;
        bool isTrue = true;
        if (t == 1) {
            if (tree[k].size() == 1) isTrue = false;
        }
        if (isTrue) cout << "yes\n";
        else cout << "no\n";
    }
}