题解:CF574B Bear and Three Musketeers
思路
互相认识没有传递关系,所以 认识 , 认识 ,但 不一定认识 。直接三层循环模拟即可。
#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) 收藏 举报 来源