博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SGU 164.Airline(结论题)
阅读量:6842 次
发布时间:2019-06-26

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

时间限制:0.25s

空间限制:4M

题意:

      在n(1<=n<=200)个点的无向完全图中,有m种不同的边.现在从中选择不超过(m+1)/2种边,使得任意两点可以通过不超过3条边互相到达。

 

 

 

 


 

Solution:

              将无向完全图的边分成两部分,那么一定有一部分所有点的最短距离不超过3。

              暂时没有较好的证明办法。。。 -_-!

              

                         

code

       取1~m/2为一组,m/2+1~m为一组,Floyd判断第一组是否满足要求,如果满足输出第一组,不满足输出第二组.

 

#include 
const int INF = 300 + 9;int g[INF][INF], f[INF][INF];int n, m, i, j, k, t;int main() { scanf ("%d%d", &n, &m); t = (m + 1) >> 1; for (i = 1; i <= n; ++i) for (j = 1; j <= n; ++j) { scanf ("%d", g[i] + j); f[i][j] = g[i][j] <= t ? 1 : INF; } for (k = 1; k <= n; ++k) for (i = 1; i < n; ++i) for (j = i + 1; j <= n; ++j) if (f[i][k] + f[j][k] < f[i][j]) f[i][j] = f[j][i] = f[i][k] + f[j][k]; for (i = 1; i < n; ++i) for (j = i + 1; j <= n; ++j) if (f[i][j] > 3) { printf ("%d\n", m - t); for (++t; t <= m; ++t) printf ("%d ", t); putchar (10); return 0; } printf ("%d\n", t); for (i = 1; i <= t; ++i) printf ("%d ", i); putchar (10); return 0;}

 

  

 

转载于:https://www.cnblogs.com/keam37/p/3910051.html

你可能感兴趣的文章
[转载]树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像...
查看>>
处理js两个数相乘的坑
查看>>
1.spring:helloword/注入/CDATA使用/其他Bean/null&级联/p命名空间
查看>>
django-pure-pagination 组件使用
查看>>
drf视图认证组件
查看>>
HDU 5059 Help him(BestCoder Round #12)
查看>>
PE Header中的FIleHeader(文件头)
查看>>
I/O异步之I/O完成端口
查看>>
[Asp.net]使用flexpaper+swftools大文件分页转换实现在线预览
查看>>
遇见requestAnimationFrame
查看>>
DB2 runstats、reorgchk、reorg 命令【转载】
查看>>
到底该如何理解DevOps这个词
查看>>
PHP 时区报错
查看>>
MySQL报错解决方案:2013-Lost connection to MySQL server
查看>>
C# DES 加密 解密
查看>>
linux 与 window 对比式理解与应用
查看>>
SEO中的DIV CSS样式的命名规则
查看>>
一些随笔,我有故事,你有酒吗
查看>>
SELECT子句顺序
查看>>
Mac 终端便利工具: 管理工具-Homebrew 和提示工具oh my zsh
查看>>