zoj 3710 Friends

来源:互联网 发布:网络老虎机揭秘 编辑:程序博客网 时间:2024/05/01 10:47

题意:每对朋友公共点达到k时才能持久,求能持久的朋友数;

思路:统计两点之间的点数,当公共点数达到k时朋友对数加1,且当前两不相邻节点间新建一条边

#include <stdio.h>#include <string.h> int main() { int t,n,m,k,x,y,ans,sum,i,j,l,flag; int map[101][101]; scanf("%d",&t); while (t--) { scanf("%d%d%d",&n,&m,&k); memset(map,0,sizeof(map)); while (m--) { scanf("%d%d",&x,&y); map[x][y]=map[y][x]=1; } ans=0; while (1) { flag=0; for (i=0;i<n;i++) for (j=0;j<n;j++) { if (i==j || map[i][j]==1) continue;sum=0; for (l=0;l<n;l++) if (i!=l && j!=l) { if (map[i][l]==1 && map[l][j]==1) sum++; if (sum>=k) { flag=1; break;} } if (sum>=k) { ans++; map[i][j]=map[j][i]=1; } } if (flag==0) break; } printf("%d\n",ans); } return 0; }





0 0