POJ 2570 floyd(传递闭包+状态压缩)
来源:互联网 发布:mac 百度云下载太慢 编辑:程序博客网 时间:2024/04/30 15:03
把图中边的连通状态(一条边有几个公司公用)压缩成二进制。
通过G[i][j]=G[i][j]|(G[i][k]&G[k][j]); 完成floyd的传递闭包,其实也就是状态转移。
#include<cstdio>#include<cstring>int G[205][205];void floyd(int n){ for(int k=1;k<=n;k++) { for(int i=1;i<=n;i++) { if(G[i][k]==0) continue; for(int j=1;j<=n;j++) { G[i][j]=G[i][j]|(G[i][k]&G[k][j]); } } }}int main(){ int n; while(scanf("%d",&n)&&n) { memset(G,0,sizeof(G)); char str[30]; int a,b; while(scanf("%d%d",&a,&b)&&(a||b)) { scanf("%s",str); int len=strlen(str); for(int i=0;i<len;i++) { G[a][b]+=(1<<(str[i]-'a')); } } floyd(n); while(scanf("%d%d",&a,&b)&&(a||b)) { bool is_print=0; //printf("ans=%d\n",G[a][b]); for(int i=0;i<26;i++) { if((1&G[a][b]>>i)==0) continue; putchar(i+'a'); is_print=1; } if(is_print==0) putchar('-'); putchar('\n'); } putchar('\n'); } return 0;}
0 0
- POJ 2570 floyd(传递闭包+状态压缩)
- POJ 2570 Fiber Network(Floyd传递闭包+状态压缩)
- POJ 2570 传递闭包 Floyd
- Poj 2570 Fiber Network【Floyd+状态压缩】
- poj 2570 Fiber Network(传递闭包,floyd+位运算)
- POJ 3660 Cow Contest (Floyd 传递闭包)
- POJ 3660 Cow Contest.(Floyd,传递闭包).
- poj 3660 Cow Contest(传递闭包 Floyd)
- poj 1975 Median Weight Bead(传递闭包 Floyd)
- POJ 3660 Cow Contest(floyd传递关系闭包)
- POJ 3660 Cow Contest (Floyd求传递闭包)
- POJ - 3660 - Cow Contest (floyd求传递闭包)
- POJ 3660 Cow Contest(Floyd求传递闭包)
- POJ 3660 牛的排名 (Floyd 传递闭包)
- poj 3660(Floyd传递闭包)
- POJ 3660 Floyd +传递闭包问题
- poj 3660(Floyd求传递闭包)
- POJ 3275 Floyd传递闭包
- 集合框架总结(基础知识)
- Swing
- ZigBee无线DCS现场控制站设计
- SDUT 3108 赏赏赏
- 亲子共读心得
- POJ 2570 floyd(传递闭包+状态压缩)
- IO 流
- block内存管理
- 七律 读百色画作有感
- js-defer
- Zigbee无线网络在线心电监测系统
- zend framework2-控制器插件创建公用对象函数,可在控制器直接调用
- Skiing
- SDUT 2809 Goldbach