POJ 2570(floyd)
http://poj.org/problem?id=2570
题意:在海底有一些网络节点。每个节点之间都是通过光缆相连接的。不过这些光缆可能是不同公司的。
现在某个公司想从a点发送消息到b点,问哪个公司可以提供这个服务。
首先输入一共有几个公司。
其次输入的是a,b两点之间的光缆是由哪几个公司提供的。0 0结束。
然后询问a,b之间是否可以有公司提供服务,有就输出那个公司,没有的话就输出-
思路:当我看到这个题,我也不知道具体怎么去操作,然后百度了一下,发现了一个人的思路很好。对于a-z这些字母。全部都是用2进制来表示
比如 abc,那么用二进制表示的也就是00000000000000000000000111,如果这个公司有服务的话,那么这个位置也就是1
然后在判断的时候,通过与或来进行判断
二进制的或 | 就是在同一个二进制位,有1则为1。 比如 0101 | 1000 答案是 1101。
二进制的与 & 就是在同一个二进制位,两个都是1才为1, 比如 1010 & 1001 答案是 1000。
二进制的取反 ~ 就是在这个二进制数中,1全部变成0,0全部变成1 比如 ~1100 答案是 0011。
二进制的 ^ 就是在同一个二进制位中,两个相同的数的结果就为0,不同就为1 比如 1100^1011 答案是 0111。
#include <stdio.h>
#include <string.h> int n,graph [ ][ ]; void floyd()
{
for( int k = ; k <= n ; k++ )
for( int i = ; i <= n ; i++ )
for( int j = ; j <= n ; j++ )
graph [ i ][ j ] |= ( graph[ i ][ k ] & graph [ k ][ j ]);
} int main()
{
// freopen("in.txt","r",stdin);
while( scanf("%d",&n) , n )
{
memset( graph , , sizeof( graph ) );
int a,b;
char c[ ];
while( scanf("%d%d",&a,&b) , a || b )
{
scanf("%s",c);
for(int i = ; i < strlen(c) ; i++ )
graph [ a ][ b ] = graph[ a ][ b ]|(<<c[ i ]-'a');
}
floyd();
while(scanf("%d%d",&a,&b),a||b)
{
for(char d = 'a' ; d <= 'z' ; d++)
if( graph[ a ][ b ] & (<<d-'a')) printf("%c",d);
if( graph [ a ][ b ] == ) printf("-");
printf("\n");
}
printf("\n");
}
return ;
}
POJ 2570(floyd)的更多相关文章
- poj 2570 Fiber Network(floyd)
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int ...
- poj 1847( floyd && spfa )
http://poj.org/problem?id=1847 一个水题,用来熟悉熟悉spfa和floyd的. 题意:有m条的铁路,要从x,到y, 之后分别就是条铁路与其他铁路的交点.第一个输入的为有n ...
- poj 2240(floyd)
http://poj.org/problem?id=2240 题意:有些人会利用货币的不用汇率来进行套现,比如1美元换0.5英镑,而1英镑又可以换10法郎,而1法郎又可以换0.21的美元,那么经过货币 ...
- poj 1125 (floyd)
http://poj.org/problem?id=1125. 题意:在经纪人的圈子里,他们各自都有自己的消息来源,并且也只相信自己的消息来源,他们之间的信息传输也需要一定的时间.现在有一个消息需要传 ...
- poj 3311(floyd+状态压缩)
题目链接:http://poj.org/problem?id=3311 思路:Floyd + 状态压缩DP 题意是有N个城市(1~N)和一个PIZZA店(0),要求一条回路,从0出发,又回到0,而且 ...
- Sightseeing trip POJ - 1734 -Floyd 最小环
POJ - 1734 思路 : Floyd 实质 dp ,优化掉了第三维. dp [ i ] [ j ] [ k ] 指的是前k个点优化后 i -> j 的最短路. 所以我们就可以 ...
- Poj(2240),Floyd求汇率是不是赚钱
题目链接:http://poj.org/problem?id=2240. Floyd算法修改一下,我要最大路径(通过转汇率变到最大)改成max. #include <iostream> # ...
- poj 3311 floyd+dfs或状态压缩dp 两种方法
Hie with the Pie Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6436 Accepted: 3470 ...
- poj 3615(floyd变形)
题目链接:http://poj.org/problem?id=3615 思路:map[i][j]表示顶点i,j之间的最高的障碍物,于是题目要求的是最高障碍物的最小值,不就是min(map[i][j], ...
随机推荐
- 界面调试工具reveal
iOS界面调试工具 Reveal 转自 http://chuansong.me/n/1308113 原创2015-04-17 唐巧iOS开发 Reveal是一个iOS程序界面调试工具.使用Reveal ...
- Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- OS命令注入
SSL http://kb.cnblogs.com/page/162080/ http://baike.baidu.com/link?url=jPitKuDw_ncDlMbOc1SkWzM9TuKX9 ...
- php中pdo例子
下面是从其他博客看到的代码 <?php $dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', ''); $db ...
- linuxMint install shuruma
http://my.oschina.net/u/1446273/blog/306053 http://blog.sina.com.cn/s/blog_5d406a1b0101jlgn.html htt ...
- 分词工具ICTCLAS5.0使用心得
接触自然语言处理有一年多了,最基本的一些自然是分词,词性标注,命名实体识别之类的知识,有些应用知道原理是一回事,自己动手做起来又是另外一回事了.最近又开始重操旧业:分词.分词最著名的自然就是中科院的分 ...
- C#对HTML文档的解析
http://www.2cto.com/kf/201312/268777.html http://jingyan.baidu.com/article/7e44095334bb162fc0e2efad. ...
- flask 知识点总结
============================request对象的常用属性============================具体使用方法如下:request.headers, requ ...
- nginx TCP 代理& windows傻瓜式安装
一.下载nginx Windows http://nginx.org/en/download.html 二.解压到目录 三.进入目录并start nginx.exe即可启动 cd d:/java/ng ...
- Java中将unix时间戳转化为正常显示时间
在unix中时间戳是一串数字表示的,使用起来非常不方便,转化方式如下: //Convert Unix timestamp to normal date style public String Time ...