티스토리 뷰

Algorithm/BOJ

2660 회장뽑기

henry1214 2018. 2. 26. 04:42

https://www.acmicpc.net/problem/2660



회원의 점수는 나머지 회원들까지 최단 거리의 최대값이다. 이 때 회원의 수가 최대 50명이므로 플로이드로 간편하게 구할 수 있다.



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
32
33
34
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
 
int n,i,j,k,d[51][51],p[51],minv=100;
 
int main()
{
    scanf("%d",&n);
    for(i=1;i<=n;i++for(j=1;j<=n;j++)
        if(i!=j) d[i][j]=100;
    while(true)
    {
        scanf("%d %d",&i,&j);
        if(i==-1 && j==-1break;
        d[i][j]=d[j][i]=1;
    }
    for(k=1;k<=n;k++for(i=1;i<=n;i++for(j=1;j<=n;j++)
        d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
    for(i=1;i<=n;i++)
    {
        int m=0;
        for(j=1;j<=n;j++if(d[i][j]!=100) m=max(m,d[i][j]);
        p[i]=m;
        minv=min(minv,m);
    }
    vector<int> v;
    int cnt=0;
    for(i=1;i<=n;i++if(p[i]==minv) cnt++,v.push_back(i);
    printf("%d %d\n",minv,cnt);
    for(i=0;i<cnt;i++printf("%d ",v[i]);
    return 0;
}
cs


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

1786 찾기  (0) 2018.02.27
2698 인접한 비트의 개수  (0) 2018.02.26
10163 색종이  (0) 2018.02.26
10159 저울  (0) 2018.02.26
2947 나무 조각  (0) 2018.02.23
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday