题解:CF574B Bear and Three Musketeers

思路

互相认识没有传递关系,所以 AA 认识 BBBB 认识 CC,但 AA 不一定认识 CC。直接三层循环模拟即可。

#include<bits/stdc++.h>
using namespace std;
int n, m, a[4005], b[4005][4005], ans = 2e9;//a数组是认识的人数,b是邻接矩阵
int main(){
    cin >> n >> m;
    for(int i = 1; i <= m; i ++){
        int x, y;
        cin >> x >> y;
        b[x][y] = 1;
        b[y][x] = 1;//无向图,所以有两次
        a[x] ++;
        a[y] ++;
    }
    for(int i = 1; i <= n; i ++)
        for(int j = i + 1; j <= n; j ++){
            if(b[i][j]){
                for(int k = j + 1; k <= n; k ++){
                    if(b[i][k] && b[j][k]) ans = min(ans, a[i] + a[j] + a[k] - 6);//他们三个互相认识,要减去6
                }
            }
        }
    if(ans != 2e9) printf("%d\n", ans);
    else puts("-1");
    return 0;
}

posted on 2024-04-14 17:42  zhangzirui66  阅读(9)  评论(0)    收藏  举报  来源

导航