两道以Floyd算法为解法的范例,第二题如果数据量较大,须采用其他解法


POJ2570-Fiber Network

//经典的传递闭包问题,由于只有26个公司可以采用二进制存储
//Time:141Ms Memory:328K
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std; #define MAX 205
#define MAXS 28 int n;
int d[MAX][MAX]; void floyd()
{
for (int k = 1; k <= n; k++)
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
d[i][j] |= d[i][k] & d[k][j]; //找出两条线路的相同公司
} int main()
{
while (scanf("%d", &n), n)
{
memset(d, 0, sizeof(d));
int a, b;
char s[MAXS];
while (scanf("%d%d", &a, &b), a && b)
{
scanf("%s", s);
int len = strlen(s);
for (int i = 0; i < len; i++)
d[a][b] |= 1 << (s[i] - 'a');
} floyd();
while (scanf("%d%d", &a, &b), a && b)
{
if (d[a][b] == 0) printf("-\n");
else {
int tmp = d[a][b];
for (int i = 0; i < 26; i++, tmp >>= 1)
if (tmp & 1) putchar('a' + i); //单个字符输出putchar较快
printf("\n");
}
}
printf("\n");
}
return 0;
}

POJ2263-Heavy Cargo

//求图中起点到终点的公路最大承载量
//Time:32Ms Memory:500K
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std; #define MAX 205
#define MAXS 32 struct City {
char s[MAXS];
}c[MAX]; int n, m;
int lc;
int board[MAX][MAX];
int d[MAX][MAX]; int find(char s[MAXS])
{
for (int i = 0; i < lc; i++)
if (!strcmp(s, c[i].s)) return i;
return -1;
} void floyd()
{
memcpy(d, board, sizeof(board)); for (int k = 0; k < lc; k++)
for (int i = 0; i < lc; i++)
for (int j = 0; j < lc; j++)
d[i][j] = max(d[i][j], min(d[i][k], d[k][j]));
} int main()
{
int cas = 0;
while (scanf("%d%d", &n, &m), n && m)
{
int dis; lc = 0;
memset(board, -1, sizeof(board));
for (int i = 0; i < m; i++)
{
scanf("%s%s%d", c[lc].s, c[lc+1].s, &dis);
int n1 = find(c[lc].s);
int n2 = find(c[lc + 1].s);
if (n1 == -1) {
n1 = lc++;
if (n2 == -1) n2 = lc++;
}
else if (n2 == -1)
c[n2 = lc++] = c[lc + 1];
board[n1][n2] = board[n2][n1] = dis;
} char s1[MAXS], s2[MAXS];
scanf("%s%s", s1, s2);
int n1 = find(s1);
int n2 = find(s2); floyd(); printf("Scenario #%d\n", ++cas);
printf("%d tons\n\n", d[n1][n2]); } return 0;
}

ACM/ICPC 之 Floyd范例两道(POJ2570-POJ2263)的更多相关文章

  1. ACM/ICPC 之 SPFA范例两道(POJ3268-POJ3259)

    两道以SPFA算法求解的最短路问题,比较水,第二题需要掌握如何判断负权值回路. POJ3268-Silver Cow Party //计算正逆最短路径之和的最大值 //Time:32Ms Memory ...

  2. ACM/ICPC 之 SPFA练习两道(ZOJ3088-ZOJ3103)

    两道题都需要进行双向SPFA,比范例复杂,代码也较长,其中第二题应该可以用DFS或者BFS做,如果用DFS可能需要的剪枝较多. ZOJ3088-Easter Holydays //利用SPFA找出下降 ...

  3. ACM/ICPC 之 差分约束系统两道(ZOJ2770-POJ1201)

    当对问题建立数学模型后,发现其是一个差分方程组,那么问题可以转换为最短路问题,一下分别选用Bellmanford-SPFA解题 ZOJ2770-Burn the Linked Camp //差分约束方 ...

  4. ACM/ICPC 之 Prim范例(ZOJ1586-POJ1789(ZOJ2158))

    两道Prim解法范例题型,简单的裸Prim,且两题相较以边为重心的Kruskal解法而言更适合以点为重心扩展的Prim解法. ZOJ1586-QS Network 题意:见Code 题解:直接的MST ...

  5. ACM/ICPC 之 Kruskal范例(ZOJ1203-POJ1861(ZOJ1542))

    两道最小生成树范例,Kruskal解法-以边为主体扩展最小生成树,需要利用并查集. ZOJ1203-Swordfish 题意:求n个给定平面坐标的城市中的一条平面距离上的最短路长(保留两位小数) 题解 ...

  6. 『ACM C++』Virtual Judge | 两道基础题 - The Architect Omar && Malek and Summer Semester

    这几天一直在宿舍跑PY模型,学校的ACM寒假集训我也没去成,来学校的时候已经18号了,突然加进去也就上一天然后排位赛了,没学什么就去打怕是要被虐成渣,今天开学前一天,看到最后有一场大的排位赛,就上去试 ...

  7. ACM/ICPC 之 Floyd练习六道(ZOJ2027-POJ2253-POJ2472-POJ1125-POJ1603-POJ2607)

    以Floyd解法为主的练习题六道 ZOJ2027-Travelling Fee //可免去一条线路中直接连接两城市的最大旅行费用,求最小总旅行费用 //Time:0Ms Memory:604K #in ...

  8. ACM/ICPC 之 Floyd+记录路径后继(Hdu1385(ZOJ1456))

    需要处理好字典序最小的路径 HDU1385(ZOJ1456)-Minimum Transport //Hdu1385-ZOJ1456 //给定邻接矩阵,求给定起点到终点的最短路径,若有相同路长的路径按 ...

  9. ACM/ICPC 之 BFS范例(ZOJ2913-ZOJ1136(POJ1465))

    通过几道经典BFS例题阐述BFS思路 ZOJ2913-Bus Pass 题意:找一个center区域,使得center到所有公交线路最短,有等距的center则输出id最小的. 题解:经典的BFS,由 ...

随机推荐

  1. [EWS]在exchange中的标识符

    摘要 最近在用ews的方式开发邮箱服务,包括写邮件,查看某封邮件的详情,回复,全部回复及转发功能.在获取收件箱的时候,关于唯一标识符的问题.也有点困惑,在每个邮件item中,存在一个changeKey ...

  2. 大数据架构师NoSQL建模技术

    从数据建模的角度对NoSQL家族系统做了比较简单的比较,并简要介绍几种常见建模技术. 1.前言 为了适应大数据应用场景的要求,Hadoop以及NoSQL等与传统企业平台完全不同的新兴架构迅速地崛起.而 ...

  3. HTML5音乐播放器(最新升级改造加强版)

    最近么,单位里面么老不顺心的,公司一直催要程序员要PHP,然后本宅好不容易推荐了一个,我日嘞,最后待遇变成1.3,吾师最后也同意1.3W,然后还说要考虑... 尼玛,4年多5年不到一点的工作经验,前端 ...

  4. [整理]VS2013常用插件

    VS2013常用插件 (工欲善其事,必先利其器.VS2013全攻略(技巧,快捷键,插件)[http://developer.51cto.com/art/201404/437282_all.htm] 代 ...

  5. AlwaysOn可用性组功能测试(二)--SQL Server群集故障转移对AlwaysOn可用性组的影响

    三. SQL Server群集故障转移对AlwaysOn可用性组的影响 1. 主副本在SQL Server群集CLUSTEST03/CLUSTEST03上 1.1将节点转移Server02.以下是故障 ...

  6. Apple Watch已向微信开放WatchKit接口?

    Apple Watch在北京时间凌晨1点的苹果发布会上首次对外公布了,一时间applewatch占据了各大媒体.早上也早早地看了相关新闻,其中福布斯中文网的一则消息分外引起@隔壁W叔叔的注意,“苹果同 ...

  7. 【C语言入门教程】4.4 指针 与 指针变量

    在程序中声明变量后,编译器就会为该变量分配相应的内存单元.也就是说,每个变量在内存会有固定的位置,有具体的地址.由于变量的数据类型不同,它所占的内存单元数也不相同.如下列声明了一些变量和数组. int ...

  8. PHP函数 rtrim() 的一个怪异现象

    今天用rtrim()函数时遇到了一个奇怪的问题: echo rtrim('<p></div>', '</div>'); // 输出为 <p echo ltri ...

  9. canvas对象arcTo函数的使用-遁地龙卷风

    (-1)环境说明 我使用的浏览器是chrome49 (1)详细介绍 $(function() { var context = lol.getContext("2d"); conte ...

  10. utils部分--一些通用的工具类封装

    1.简介 utils部分是对一些常用的工具类进行简单的封装,使用起来比较方便.这里列举常用的一些. 2.ContextUtils使用 主要封装了网络判断.一些方法解释如下: ? 1 2 3 4 5 6 ...