zoj 1967 Fiber Network(位运算&&FLOYD)

来源:互联网 发布:淘宝万艾可是真的吗 编辑:程序博客网 时间:2024/04/29 05:03

floyd的例题。

用位运算做格外的清新简单,位运算第一题。

题意:

对于n个点,给出他们之间的标志要求找出所有能连通S->T的标志。

1->3:可以直接从1到3,也可以进过2再到3.这样标志有a,b符合条件。

分析:

因为最多有26个公司,所以可以用26个二进制位表示每个公司。

1->2:{‘a’,'b','c'}:"00000000000000000000000111"

2->3:{'a','d'}:"00000000000000000000001001"

1->3:可由1->2和2->3'与'得到:"00000000000000000000000000001"

M[i][j] | = M[i][k]&M[k][j];

根据floyd递推公式:

可推:

A(0)[i][j]=原始直接相连的标志集合;

A(k)[i][j]=I{A(k-1)[i][j],&(A(k-1)[i][k],A(k-1)[k][j])}

还有一个要注意的地方是输入输出时M[A][B]的处理。

m[A][B] | = 1<<(str[i]-'a');


好了,现在全部就显得很简单了。

===========================================yy===========================

肩膀酸痛,跟暑假集训时一样了,大概坐的多啊。这几天的比赛发现自己水平好囧,难一点的有点算法的就不会做,做出来的题目又很快被新手赶上。

怎么办啊怎么办,学习算法+奋勇刷题吧,搞acm的思维要活跃,知识要丰富。汗啊,看到说“搞acm的要当学霸,优秀应该是各个方面的”。

偶囧了,对不起acmer了,努力吧。2012,我要强大!!!off

原创粉丝点击