博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 10985 Rings'n'Ropes
阅读量:6948 次
发布时间:2019-06-27

本文共 1631 字,大约阅读时间需要 5 分钟。

UVA_10985

LR的间距能拉多远是取决于LR之间的最短路,因此,水平悬挂的绳一定是LR之间最短路的一个部分。

而水平的Ring一定满足到LR的距离和是LR之间最短路的长度,因此我们可以先把所有水平的Ring找出来,符合要求的线一定是这些水平Ring之间的连线,但水平Ring之间的连线不一定符合要求(当两个Ring位于同一位置且恰好两者之间有一条连线,这条连线就不符合要求)。

因此,思路就是先用Floyd做最短路,然后枚举LR并计算符合要求的连线的数目即可。

#include
#include
#define MAXD 150 #define INF 100000000 int f[MAXD][MAXD], M, N, res, ans[MAXD]; void init() {
int i, j, a, b; scanf("%d%d", &N, &M); for(i = 0; i < N; i ++) for(j = 0; j < N; j ++) {
if(i == j) f[i][j] = 0; else f[i][j] = INF; } for(i = 0; i < M; i ++) {
scanf("%d%d", &a, &b); f[a][b] = f[b][a] = 1; } } void floyd() {
int i, j, k; for(k = 0; k < N; k ++) for(i = 0; i < N; i ++) for(j = 0; j < N; j ++) if(f[i][k] + f[k][j] < f[i][j]) f[i][j] = f[i][k] + f[k][j]; } void printresult() {
int i, j, k, max = 0; for(i = 0; i < N; i ++) for(j = i + 1; j < N; j ++) if(f[i][j] != INF) {
res = 0; for(k = 0; k < N; k ++) if(f[i][k] + f[k][j] == f[i][j]) ans[res ++] = k; int p, q, temp = 0; for(p = 0; p < res; p ++) for(q = p + 1; q < res; q ++) {
int a = ans[p]; int b = ans[q]; if(f[a][b] == 1 && f[i][a] != f[i][b]) temp ++; } if(temp > max) max = temp; } printf("%d\n", max); } int main() {
int t, tt; scanf("%d", &t); for(tt = 0; tt < t; tt ++) {
init(); floyd(); printf("Case #%d: ", tt + 1); printresult(); } return 0; }

转载地址:http://pkuil.baihongyu.com/

你可能感兴趣的文章
【益智题】十块钱去哪了?
查看>>
静态密码已经"OUT" 探索身份验证新方式
查看>>
轻松搞定RabbitMQ(四)——发布/订阅
查看>>
projecteuler_problem12
查看>>
VN2VN——中小企业的网络融合之道
查看>>
数百亿的新疆安防市场,集成巨头告诉你如何才能从中分杯羹
查看>>
[译] REST API 已死,GraphQL 长存
查看>>
学点PYTHON基础的东东--数据结构,算法,设计模式---访问者模式
查看>>
独家 | 陆化普:大数据、AI解决交通管理难题的新思路
查看>>
你需要的不是大数据 而是正确的数据~
查看>>
我只能说,Spring Data REST真的很燥辣
查看>>
使用短生命周期容器(Ephemeral Containers)构建微服务化的工作流
查看>>
R语言领跑 大数据岗位霸占IT薪酬榜单
查看>>
靠播放业务吃不饱?音乐流媒体纷纷“加电商”卖周边
查看>>
SSL之父称SSL不会因被攻击而失去生命力
查看>>
解读对象存储九大关键特征
查看>>
重构计算力 浪潮M5新一代服务器闪耀登场
查看>>
品高云产品经理邱洋:做国内云计算第一品牌
查看>>
大数据挑战:敢不敢不要加入人的判断?
查看>>
2014中国高校SAS数据分析大赛拉开帷幕
查看>>