?**[
[floyd]poj 2570 fiber network #floyd+位运算
额。。。又在G++下TLE了。C++稳过。
*/
#include <stdio.h>
#include <string.h>
#define N 202
int u,v,n,mat[N][N],bit[27];
char s[30];
int main(){
int i,j,k;
for(i = 0; i < 26; ++i)
bit[i] = (1 << i);
while(scanf("%d",&n) != EOF && n){
memset(mat,0,sizeof(mat));
while(scanf("%d%d",&u,&v) != EOF && u){
scanf("%s",s);
for(i = 0 ; s[i]; ++i)
mat[u][v] |= bit[s[i] - 'a'];
}
for(k = 1; k <= n; ++k)
for(i = 1; i <= n; ++i)
for(j = 1; j <= n; ++j)
mat[i][j] |= (mat[i][k] & mat[k][j]);
while(scan
[floyd]poj 2570 fiber network #floyd+位运算
最新推荐文章于 2016-12-06 19:46:30 发布
这篇博客介绍了一个利用Floyd算法和位运算解决POJ 2570题目的C++程序。程序首先初始化矩阵,然后通过Floyd算法更新路径信息,并使用位运算快速判断两个节点间是否存在连接。对于测试用例,程序能够正确输出连接的字符或显示无连接。
摘要由CSDN通过智能技术生成