일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vscode
- 기숙사 바닥
- Anaconda
- 경로 찾기
- 11403번
- 레스트리s20
- Selction Sort
- 10814번
- insertion sort
- 2025
- 2858번
- Sort Algorithm
- 정렬알고리즘
- 리솜리조트
- 리솜포레스트
- 동전0
- 서머싯몸
- 민음사
- osaka
- 헤브나인스파
- bubble sort
- 정대건
- 나이순정렬
- Baekjoon
- Algorithm
- 11047번
- Beakjoon
- python
- 민음사북클럽
- 인생의베일
- Today
- Total
JIyeon's life
[Baekjoon] 5567 결혼식 본문
알고리즘 분류
구현
그래프 이론
문제 - https://www.acmicpc.net/problem/5567
-문제-
상근이는 자신의 결혼식에 학교 동기 중 자신의 친구와 친구의 친구를 초대하기로 했다. 상근이의 동기는 모두 N명이고, 이 학생들의 학번은 모두 1부터 N까지이다. 상근이의 학번은 1이다.
상근이는 동기들의 친구 관계를 모두 조사한 리스트를 가지고 있다. 이 리스트를 바탕으로 결혼식에 초대할 사람의 수를 구하는 프로그램을 작성하시오.
-입력조건-
첫째 줄에 상근이의 동기의 수 n (2 ≤ n ≤ 500)이 주어진다. 둘째 줄에는 리스트의 길이 m (1 ≤ m ≤ 10000)이 주어진다. 다음 줄부터 m개 줄에는 친구 관계 ai bi가 주어진다. (1 ≤ ai < bi ≤ n) ai와 bi가 친구라는 뜻이며, bi와 ai도 친구관계이다.
-해결방법-
행렬(n+1,n+1)을 만든뒤, 친구인 관계를 입력 받는다. 이때, 1 2 이렇게 입력이 들어올 수도 있지만 2 1 이렇게 입력이 들어올 수 있기 때문에
relation[a][b] =1 , relation[b][a] =1 로 행렬을 완성한다.
1행을 탐색하며 친구인 관계를 queue에 삽입
1은 다 탐색했으니 visited[1]=false로 상근이 뿐만아니라 탐색한 친구를 false로 만들어 탐색유무 표시 한다.
queue가 빌때까지 queue에 넣은 친구를 꺼내며 이 친구의 친구를 확인한다. visited도 확인
처음엔 vector<pair<int,int>>로 했다가 처음 경우의 수 때문에 틀림..ㅠㅠ
<소스코드>
#include <iostream> #include <vector> #include <queue> using namespace std; int main() { int n, m; cin >> n >> m; //vector<pair<int, int>> relation(m); vector<vector<int>> relation(n + 1, vector<int>(n + 1)); vector < bool > visited(n + 1,true); for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; relation[a][b] = 1; relation[b][a] = 1; } int answer = 0; queue<int> Q;
for (int i = 1; i <= n; i++) { if (relation[1][i] == 1) { visited[i] = false; Q.push(i); answer++; } }
visited[1] = false; while (!Q.empty()) { int temp = Q.front(); Q.pop(); for (int i = 1; i <= n; i++) { if (relation[temp][i] == 1 && visited[i] == true) { visited[i] = false; answer++; } } } cout << answer << endl; return 0; } |
'algorithm > baekjoon' 카테고리의 다른 글
[Baekjoon] 11403 경로 찾기 (0) | 2019.04.09 |
---|---|
[Baekjoon] 1012 유기농배추 (0) | 2019.03.13 |
[Baekjoon] 2667 단지번호붙이기 (0) | 2019.01.27 |
[Baekjoon] 1697 숨바꼭질 (0) | 2019.01.27 |
[Baekjoon] 11724 연결 요소의 개수 (0) | 2019.01.23 |