hdu 1869
来源:互联网 发布:java静态内部类实例化 编辑:程序博客网 时间:2024/06/05 23:57
六度分离
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4205 Accepted Submission(s): 1715
Lele对这个理论相当有兴趣,于是,他在HDU里对N个人展开了调查。他已经得到了他们之间的相识关系,现在就请你帮他验证一下“六度分离”是否成立吧。
对于每组测试,第一行包含两个整数N,M(0<N<100,0<M<200),分别代表HDU里的人数(这些人分别编成0~N-1号),以及他们之间的关系。
接下来有M行,每行两个整数A,B(0<=A,B<N)表示HDU里编号为A和编号B的人互相认识。
除了这M组关系,其他任意两人之间均不相识。
8 70 11 22 33 44 55 66 78 80 11 22 33 44 55 66 77 0
YesYes//floyd算法 :联通的话赋值为1,一个点到另一点需要小于等于6步,那么便成立。#include<stdio.h>#define max 101#define INF 100000000
int N;int flag,flag2;int g[max][max];
void floyd(){ int i,j,k; flag = 0; for(k=0;k<N;k++) for(i=0;i<N;i++) for(j=0;j<N;j++) if(g[i][j] > g[i][k]+g[k][j]) { g[i][j] = g[i][k] + g[k][j]; }}
int main(){ int M,i,j,a,b; int k1,k2; while(~scanf("%d%d",&N,&M)) { for(i=0;i<N;i++) for(j=0;j<N;j++) { if(i==j)g[i][j] = 0; else g[i][j] = INF; } while(M--) { scanf("%d%d",&a,&b); g[a][b] = 1; g[b][a] = 1; } floyd(); flag = 0; flag2 = 1; for(i=0;i<N;i++) for(j=0;j<N;j++) { if(g[i][j]>7 && g[i][j] != INF)//认识的人之间最短路不能大于7 flag = 1; if(g[i][j] == INF)//不认识的人各自的最短路加起来不大于6 { for(k1=0;k1<N;k1++) for(k2=0;k2<N;k2++) { if(g[i][k1]!=INF && g[j][k2]!=INF && k1!=i && k2!=j)//自己和自己认识不算 { if(g[i][k1]+g[j][k2]<=6) flag2 = 0; } } if(flag2 == 1) flag = 1; flag2 = 1; } } if(flag == 1) printf("No\n"); else printf("Yes\n"); }}
- hdu 1869
- hdu 1869
- hdu 1869
- hdu 1869
- hdu 1869
- hdu 1869
- hdu 1869
- HDU 1869
- hdu 1869最小长方形
- HDU 1869 (最短路)
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- js的Array数组
- spring中的autowire机制
- HDOJ2029
- 815 三角形
- Java 的 ClASSPATH 和 Package
- hdu 1869
- hdu2565 放大X
- 小明A+B(杭电2096)
- HDU 3491 Thieves | 最小割
- bzoj2565最大双回文串
- 822 画图
- NSMutableString字符串删除最后一个字符串
- SAP Mobile Documents 资料收集
- hdu 1098