POJ2570 Fiber Network(Floyd)
2016-01-03 14:49
190 查看
d[i][j]表示从i点到j点可以全程提供光纤的公司的集合,集合用26位的二进制压缩。
那么状态转移方程就是dk[i][j]|=dk-1[i][k]&dk-1[k][j]。
那么状态转移方程就是dk[i][j]|=dk-1[i][k]&dk-1[k][j]。
#include<cstdio> #include<cstring> using namespace std; int n,d[222][222]; 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 str[33]; while(~scanf("%d",&n) && n){ memset(d,0,sizeof(d)); while(~scanf("%d%d",&a,&b) && a){ scanf("%s",str); int c=0; for(int i=0; str[i]; ++i) c|=1<<str[i]-'a'; d[a][b]=c; } Floyd(); while(~scanf("%d%d",&a,&b) && a){ if(d[a][b]==0){ puts("-"); continue; } for(int i=0; i<26; ++i){ if((d[a][b])>>i&1) putchar(i+'a'); } putchar('\n'); } putchar('\n'); } return 0; }
相关文章推荐
- Swift开发IOS-UITextField
- 我们要科学不要激情
- 2016-2019三年计划
- 【费用流】hdu1533 poj2516 bzoj1070 bzoj1061
- 重拾博客
- ubuntu 14.04 安装openssh-server报错问题解决
- 【数学模型】椅子能在不平的地面上放平吗?(1)
- Hello 2016
- tomcate端口设定和服务器虚拟目录设定
- Apache源码安装
- ubuntu14.04 ssh允许root用户远程登录
- ubuntu14.04 ssh允许root用户远程登录
- IOS基础总结
- 从window.console&&console.log(123)浅谈JS的且运算逻辑(&&)
- C#基础加强一:Equals()和运算符==区别
- [C++] c++中二进制文件的创建与使用
- Unexpected error: Invalid byte sequence in conversion input的问题
- Snail—ORACLE基础之事务学习(五)
- phonegap android app登录状态保存释疑
- Android中获取资源文件的几种方法