HDOJ 1869 六度分离 两两之间最短距离的最大值
2011-12-31 19:30
447 查看
这道题的背景是以著名的六度定理为依托,现在的SNS网站的理论基础。也就是说两个陌生人之间的最多不会由超过6个熟人相连。
想到这就可以用floyd算法求解了。若存在一对顶点的距离大于7,那么这个定理也就不成立。注意,两个人之间不超过6个人,也就是说两个人最多由7条边相连,而不是6条边。
想到这就可以用floyd算法求解了。若存在一对顶点的距离大于7,那么这个定理也就不成立。注意,两个人之间不超过6个人,也就是说两个人最多由7条边相连,而不是6条边。
#include<iostream> #include<stdio.h> using namespace std; const int Max = 100; int g[Max][Max]; const int Infinity = 3000000; int num; int main() { int m, h, t; bool flag; while(scanf("%d%d", &num, &m) != EOF) { for(int i=0; i<Max; i++) for(int j=0; j<Max; j++) g[i][j] = Infinity; for(int i=0; i<Max; i++) g[i][i] = 0; for(int i=0; i<m; i++) { scanf("%d%d", &h, &t); g[h][t] = g[t][h] = 1; } for(int i=0; i<num; i++) for(int j=0; j<num; j++) for(int k=0; k<num; k++) if(g[j][k] > g[j][i] + g[i][k]) g[j][k] = g[j][i] + g[i][k]; flag = true; for(int i=0; i<num; i++) for(int j=0; j<num; j++) if(g[i][j] > 7) { flag = false; break; } if(flag) printf("Yes\n"); else printf("No\n"); } system("pause"); return 0; }
相关文章推荐
- hdoj 1869 六度分离【最短路径求两两边之间最长边】
- HDOJ--1869--六度分离(用三种算法写的,希望能比较出来他们之间的区别)
- hdoj-1869 六度分离【最短路径--dijkstra&&spfa&&floyd】
- 引入Hub再生的最短帧长及主机之间距离的最大值计算
- 旋转卡壳--凸包之间的最大距离
- hdoj 2083 简易版之最短距离
- poj——2456Aggressive cows(二分搜索 求牛牛之间最大距离)
- 数据结构:点对之间最短距离--Floyd算法
- 某公司2017秋季招聘在线编程题(求圆上n个点任意两点之间最大距离)
- 最大流ISAP(距离标号最短增广路算法)模板
- 六度分离 -(PAT)(hdoj 1869)
- HDOJ 1869 六度分离(最短路之floyd)
- HDOJ 1869 六度分离【Floyd】
- 两个单词之间的最短距离
- 任意两节点之间最短距离
- 六度分离 HDU - 1869 (最短路径)
- hdu 2544 最短路 图论-求两点之间的最短距离 Dijkstra
- HDOJ-1869六度分离(FLOYD)
- HDOJ 1869 六度分离(floyd)
- ACM-ICPC 2015 Asia Tsukuba Regional Online Open Contest B(两挡板之间放着圆球,求挡板最短距离)