Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- c#
- 내적
- 우분투
- 유니티
- 외적
- ubuntu
- Unity
- 문제풀이
- 수학
- uclidean algorithm
- 벡터
- 보로노이다이어그램
- 알고리즘
- linux
- Vector
- 충돌 알고리즘
- 다이나믹 프로그래밍
- C++
- GJK
- 백준
- 분할축 이론
- C
- PS
- SOH
- dp
- Expanding Polytope Algorithm
- AABB
- Doubly Connected Edge List
- 리눅스
- Graham Scan
Archives
- Today
- Total
마이 플밍 블로그
[C++] 백준 5567 - 결혼식 본문
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;
}
'문제풀이 > 백준' 카테고리의 다른 글
| [C++] 백준 1600 - 말이 되고픈 원숭이 (1) | 2023.10.06 |
|---|---|
| [C++] 백준 2146 - 다리 만들기 (0) | 2023.10.01 |
| [C++] 백준 1937 - 욕심쟁이 판다 (0) | 2023.02.26 |
| [C++]백준 11780 - 플로이드2 (0) | 2022.12.13 |
| [C++]백준 1051 - 숫자 정사각형 (0) | 2022.03.15 |