티스토리 뷰

백준/실버

[백준 14675번] 단절점과 단절선 (C++)

게임개발기원 2023. 12. 20. 16:39

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

 

14675번: 단절점과 단절선

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

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;

int N, Q;
vector<int>v[100001];

int main()
{
    ios_base::sync_with_stdio(0); 
	cin.tie(0);
    
    cin >> N;
    for(int i=0; i<N-1; i++)
    {
        int a, b;
        cin >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }

    cin >> Q;

    while(Q--)
    {
        int t, k;
        cin >> t >> k;

        if(t==1)
        {
            cout << (v[k].size()>=2 ? "yes" : "no") << "\n"; //끝점이 아니면 단절점
        }
        else
        {
            cout << "yes" << "\n"; //트리에서 모든 간선은 단절선
        }

    }

    return 0;
}

 

트리에서 현재 트리에 연결된 값이 2이상(현재 정점이 끝점이 아니라면) 단절점이다.

끝점의 경우 연결된 값이 1개이기에 그래프가 2개이상으로 나뉠수가 없다.

 

그리고 트리에서 모든 간선은 단절선이기에 바로 yes를 출력해주면 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함