Notice
Recent Posts
Recent Comments
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

블로그 언저리인 무언가

[백준/BOJ] 1058 친구 본문

Programming/BOJ

[백준/BOJ] 1058 친구

he1fire 2020. 9. 19. 02:45
728x90

문제 : 1058 친구

 

1058번: 친구

지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또다른 사람 B의 2-친구가 되기 위해선, 두 사람�

www.acmicpc.net

친구, 친구의 친구가 가장 많은 사람의 친구 수를 출력하는 문제이다.

거리가 2 이내인 정점의 개수의 최댓값을 구하면 되므로

각 정점마다 BFS로 체크하다 거리가 2 이상 넘어가면 탈출하도록 코드를 짜고

최댓값을 취합해 출력하면 된다.


Code

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll N, ans=0;
string arr[55];
ll BFS(ll st){
    ll visit[55], ret=0;
    fill(&visit[0],&visit[54],-1);
    queue<ll> q;
    q.push(st);
    visit[st]=0;
    while (!q.empty()){
        ll x=q.front();
        q.pop();
        if (visit[x]>=2)
            break;
        for (int i=0;i<N;i++){
            if (arr[x][i]=='Y' && visit[i]==-1){
                visit[i]=visit[x]+1;
                q.push(i);
                ret++;
            }
        }
    }
    return ret;
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> N;
    for (int i=0;i<N;i++){
        cin >> arr[i];
    }
    for (int i=0;i<N;i++){
        ans=max(ans,BFS(i));
    }
    cout << ans;
    return 0;
}
728x90

'Programming > BOJ' 카테고리의 다른 글

[백준/BOJ] 1235 학생 번호  (0) 2020.09.21
[백준/BOJ] 1668 트로피 진열  (0) 2020.09.19
[백준/BOJ] 2166 다각형의 면적  (1) 2020.09.19
[백준/BOJ] 9019 DSLR  (0) 2020.09.19
[백준/BOJ] 5525 IOIOI  (0) 2020.09.19
Comments