POJ 2570 Fiber Network(最短路 二进制处理)
题目翻译
一些公司决定搭建一个更快的网络。称为“光纤网”。
他们已经在全世界建立了很多网站。这 些网站的作用类似于路由器。不幸的是,这些公司在关于网站之间的接线问题上存在争论,这样“光纤网”项目就被迫终止了,留下的是每一个公司自己在某些网站之间铺设的线路。 如今,Internet 服务供应商。当想从网站 A传送数据到网站 B,就感到困惑了。究竟哪个公司 可以提供必要的连接。
请帮助供应商回答他们的查询。查询全部可以提供从网站
A到站定 B的线 路连接的公司。
输入描写叙述:
输入文件包括多个測试数据。每一个測试数据第 1行为一个整数 n,代表网络中网站的个数。n = 0 代表输入结束。否则 n的范围为:1≤n≤200。网站的编号为 1, …, n。
接下来列出了这些站 点之间的连接。每对连接占一行,首先是两个整数 A和B,A = B = 0 代表连接列表结束,否则 A、 B的范围为:1≤A, B≤n,表示网站 A和网站 B之间的单向连接;每行后面列出了拥有网站
A到 B之间连接的公司。公司用小写字母标识,多个公司的集合为包括小写字母的字符串。
连接列表之后。是供应商查询的列表。每一个查询包括两个整数 A和B,A = B = 0 代表查询列 表结束,也代表整个測试数据结束,否则 A、B 的范围为:1≤A, B≤n,代表查询的起始和终止 网站。
假定不论什么一对连接和查询的两个网站都不同样。
输出描写叙述:
对測试数据中的每一个查询,输出一行,为满足下面条件的全部公司的标识:这些公司能够通 过自己的线路为供应商提供从查询的起始网站到终止网站的数据通路。假设没有满足条件的公司, 则仅输出字符"-"。每一个測试数据的输出之后输出一个空行。
公司最多有26个 能够用2进制来表示网站间的连接关系 假设提供网站 1 到网站 2 的连接的公司集合为{ 'a', 'b', 'c' },能够用 “00000000000000000000000000000111”表示,提供网站 2到网站 3的连接的公司集合为{ 'a', 'd' },用“00000000000000000000000000001001”表示,这两个整数进行二进制与运算后
得到“00000000000000000000000000000001”,表示通过中间网站 2,提供网站 1到网站 3的连 接的公司集合为{ 'a' }。
这样就floyd进行处理就类似最短路问题了
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 205;
int d[N][N], n; 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()
{
int a, b;
char s[30];
while(scanf("%d", &n), n)
{
memset(d, 0, sizeof(d));
while(scanf("%d%d", &a, &b), a)
{
scanf("%s", s);
for(int i = 0; s[i] != '\0'; ++i)
d[a][b] = d[a][b] | (1 << s[i] - 'a');
}
floyd();
while(scanf("%d%d", &a, &b), a)
{
for(char c = 'a'; c <= 'z'; ++c)
if(d[a][b] & (1 << c - 'a')) printf("%c", c);
if(d[a][b] == 0) printf("-");
printf("\n");
}
printf("\n");
}
return 0;
}
Description
started to quarrel about the connecting lines, and ended up with every company laying its own set of cables between some of the nodes.
Now, service providers, who want to send data from node A to node B are curious, which company is able to provide the necessary connections. Help the providers by answering their queries.
Input
follows a list of connections. Every connection starts with two numbers A, B. The list of connections is terminated by A=B=0. Otherwise, 1<=A,B<=n, and they denote the start and the endpoint of the unidirectional connection, respectively. For every connection,
the two nodes are followed by the companies that have a connection from node A to node B. A company is identified by a lower-case letter. The set of companies having a connection is just a word composed of lower-case letters.
After the list of connections, each test case is completed by a list of queries. Each query consists of two numbers A, B. The list (and with it the test case) is terminated by A=B=0. Otherwise, 1<=A,B<=n, and they denote the start and the endpoint of the query.
You may assume that no connection and no query contains identical start and end nodes.
Output
of the query. If there are no companies, output "-" instead. Output a blank line after each test case.

Sample Input
3
1 2 abc
2 3 ad
1 3 b
3 1 de
0 0
1 3
2 1
3 2
0 0
2
1 2 z
0 0
1 2
2 1
0 0
0
Sample Output
ab
d
- z
-
POJ 2570 Fiber Network(最短路 二进制处理)的更多相关文章
- POJ 2570 Fiber Network
Description Several startup companies have decided to build a better Internet, called the "Fibe ...
- ZOJ 1967 POJ 2570 Fiber Network
枚举起点和公司,每次用DFS跑一遍图,预处理出所有的答案.询问的时候很快就能得到答案. #include<cstdio> #include<cmath> #include< ...
- poj 2570 Fiber Network(floyd)
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int ...
- POJ 2579 Fiber Network(状态压缩+Floyd)
Fiber Network Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3328 Accepted: 1532 Des ...
- POJ 1459 Power Network / HIT 1228 Power Network / UVAlive 2760 Power Network / ZOJ 1734 Power Network / FZU 1161 (网络流,最大流)
POJ 1459 Power Network / HIT 1228 Power Network / UVAlive 2760 Power Network / ZOJ 1734 Power Networ ...
- 【POJ 3694】 Network(割边<桥>+LCA)
[POJ 3694] Network(割边+LCA) Network Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7971 ...
- POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]
题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...
- POJ 2236 Wireless Network ||POJ 1703 Find them, Catch them 并查集
POJ 2236 Wireless Network http://poj.org/problem?id=2236 题目大意: 给你N台损坏的电脑坐标,这些电脑只能与不超过距离d的电脑通信,但如果x和y ...
- zoj 1967 Fiber Network/poj 2570
题意就是 给你 n个点 m条边 每条边有些公司支持 问 a点到b点的路径有哪些公司可以支持 这里是一条路径中要每段路上都要有该公司支持 才算合格的一个公司// floyd 加 位运算// 将每个字符当 ...
随机推荐
- [剑指offer] 8+9. 跳台阶+变态跳台阶 (递归 时间复杂度)
跳台阶是斐波那契数列的一个典型应用,其思路如下: # -*- coding:utf-8 -*- class Solution: def __init__(self): self.value=[0]*5 ...
- Chrome的JSON View插件
Chrome的JSON View插件 学习了:http://www.cnplugins.com/zhuanti/five-chrome-json-plugins.html 下载了:http://www ...
- YAML说明
YAML说明 https://www.cnblogs.com/songchaoke/p/3376323.html XML的简化
- Android之使用weight属性实现控件的按比例分配空间
从今天開始,把看书时候的知识点整理成博客, 这个比較简单,预计有经验的都用过,weight属性 在做Android布局的时候,常常遇到须要几个控件按比例分配空间的情况 比方下图效果 在底部设置两个bu ...
- JAVA设计模式之【迭代器模式】
迭代器模式 聚合类,聚合对象 电视机遥控器,迭代器,遍历局和对象中的成员 灵活新增遍历方法 将负责遍历数据的方法提取出来,封装到专门的类中,实现数据存储和数据遍历分离.这就是迭代器模式. 灵活性,可扩 ...
- 服务器共享session的方式
服务器共享session的方式 简介 1. 基于NFS的Session共享 NFS是Net FileSystem的简称,最早由Sun公司为解决Unix网络主机间的目录共享而研发.这个方案实现最为简单, ...
- 89.[NodeJS] Express 模板传值对象app.locals、res.locals
转自:https://blog.csdn.net/Elliott_Yoho/article/details/53537437 locals是Express应用中 Application(app)对象和 ...
- Linux命令详解./configure,make,make install的作用
这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤. ./configure是用来检测你的安装平台的目标特征的.比如它会检测你是不是有CC或GCC,并不是需要CC或GCC ...
- ASP.NET MVC 使用FluentScheduler做定时任务
源代码地址: https://github.com/fluentscheduler/FluentScheduler 使用NuGet安装FluentScheduler 这是我实际项目中用到的代码,也可看 ...
- 《剑指offer》二叉搜索树与双向链表
一.题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向 二.输入描述 输入一棵二叉搜索树 三.输出描述 将该二叉搜索树转换成一个 ...