HDOJ 1869 六度分离 两两之间最短距离的最大值
来源:互联网 发布:软件管理器 编辑:程序博客网 时间:2024/06/05 16:22
这道题的背景是以著名的六度定理为依托,现在的SNS网站的理论基础。也就是说两个陌生人之间的最多不会由超过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 六度分离 两两之间最短距离的最大值
- 任意两节点之间最短距离
- 两数组最短距离
- 两数组最短距离
- 两数组最短距离
- 两数组最短距离
- 两数组最短距离
- 两数组最短距离
- 两数组最短距离
- 两数组最短距离
- 两数组最短距离 acm
- 两数组最短距离 acm
- acm--两数组最短距离
- SDUT 两数组最短距离
- 1075: 两数组最短距离
- 1208 -- 两数组最短距离
- HDOJ 题目1869 六度分离(最短路)
- HDOJ 六度分离 1869【简单最短路】
- 试题:实现一个不能被继承的类(下)
- John the Ripper用法全解
- Dev-C++的一些使用技巧
- 如何在sqlserver数据库表中建立复合主键
- 写在2011
- HDOJ 1869 六度分离 两两之间最短距离的最大值
- CppSQLite - C++ Wrapper for SQLite
- 写在2012元旦之前
- 2011年年度总结——学习内容整理与感受
- 浅谈技术团队项目考核体系的建立
- Android中notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别
- 如何在 linux 下检测内存泄漏
- 《我是一只 IT 小小鸟》 - 书摘精要
- android Fragments详解二:创建Fragment