문제풀이/백준

[C++] 백준 5567 - 결혼식

레옹 2023. 2. 26. 22:43
 

5567번: 결혼식

예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대

www.acmicpc.net


풀이

1번 노드부터 시작해서 연결된 간선들을 탐색하며 한번 방문했으면 답에 추가하고 이미 방문했다면 연결된 간선들을 탐색만 한다.

탐색을 할때마다 카운트를 1증가시키며 카운트가 2가되면 answer을 반환한다.

 

 

코드

#include <bits/stdc++.h>

using namespace std;

int n, m;
int flag[501];

vector<int> friends[501];

int Find(int u, int c){
    
    int answer = 0;
    if(flag[u] == 0){
        flag[u] = 1;
        answer+=1;
    }
    if(c == 2){
    return answer;
    }
    
    for(int i = 0 ; i< friends[u].size(); i++){
        int nF = friends[u][i];
        answer += Find(nF, c+1);
    }
    return answer;
}
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> n >> m;
    for(int i = 0 ; i < m; i++){
        int p1,p2;
        cin >> p1 >> p2;
        friends[p1].push_back(p2);
        friends[p2].push_back(p1);
    }
    cout << Find(1,0) -1;
    return 0;
}