POJ
来源:互联网 发布:淘宝网大码女装店连衣裙 编辑:程序博客网 时间:2024/06/04 00:27
传送门:POJ2139
题意:牛们最近在拍电影,所以他们准备去玩一个游戏——“六度分割”的变体。 游戏是这样进行的:每个牛离自己的距离是0度,如果两个不同的牛同时出现在一个电影里,那么他们之间的距离为1度,如果两只牛从未一起工作,但它们都与第三只牛一起工作,那么他们之间的距离为2度。 这N(2<=N<=300)头牛对找出那只牛与所有牛之间的平均距离最短感兴趣。当然,不算上他自己。这些牛拍了M(1<=M<=10000)部电影,并且保证每两个牛之间都有一定的关系。求那一头牛与其它牛距离的平均值最小值,把它乘100输出。
思路:求任意两点间最短距离,典型floyd,注意一下输出的时候取下整数就行了。
#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>#define ll long long#define pb push_back#define fi first#define se second#define pi acos(-1)#define inf 0x3f3f3f3f#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1#define rep(i,x,n) for(int i=x;i<n;i++)#define per(i,n,x) for(int i=n;i>=x;i--)using namespace std;typedef pair<int,int>P;const int MAXN=100010;int gcd(int a,int b){return b?gcd(b,a%b):a;}int w[303][303], tmp[303];int main(){int n, m, t;scanf("%d %d", &n, &m);memset(w, inf, sizeof(w));for(int i = 1; i <= n; i++)w[i][i] = 0;while(m--){cin >> t;for(int i = 0; i < t; i++){cin >> tmp[i];}for(int i = 0; i < t; i++)for(int j = 0; j < i; j++)w[tmp[i]][tmp[j]] = w[tmp[j]][tmp[i]] = 1;}for(int k = 1; k <= n; k++)for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)w[i][j] = min(w[i][j], w[i][k] + w[k][j]);double ans = inf;for(int i = 1; i <= n; i++){int sum = 0;for(int j = 1; j <= n; j++)sum += w[i][j];ans = min(ans, sum * 100 * 1.0/ (n - 1));}printf("%d\n", (int)ans); return 0;}
阅读全文
0 0
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- 类与类之间的关系
- 极其快速的筛法+费马定理-cf114E
- 删除字符串里多余的空格,只保留一个空格
- redis命令
- ios 按钮的图片和文字上下排版
- POJ
- Ubuntu下孤儿进程问题
- 【原创】【重庆市NOIP2015模拟题】【CQBZOJ 2932】10.6第一题 旅行
- php博客小作业
- Android 5.1版本以上WebView内存泄漏问题及快速解决方法
- 用python读写excel的强大工具:openpyxl——神文
- spring 事务-使用@Transactional 注解(事务隔离级别)
- Mysql5.6优化方法
- sql中索引优化查询效率的总结