알고리즘
백준 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";
}
}