题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1181

题意很简单。

有用并查集做的。我这里用传递闭包做。

有向图的传递闭包采用Floyd思想,可以判断任意两点之间是否有通路。

PS:Floyd思想:对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短。如果是更新它。

这题代码:#include <iostream>

#include <cmath>
#include <cstring>
using namespace std; int map[200][200]; void floyd()
{
for(int i='a'; i<='z'; i++)
{
for(int j='a'; j<='z'; j++)
{
if(map[i][j]) //如果i->j
{
for(int k='a'; k<='z'; k++)
{
if(map[k][i]) //并且k->i
{
map[k][j] = 1; //那么k->j
}
}
}
}
}
} int main()
{
char str[100];
memset(map,0,sizeof(map));
while(cin>>str)
{
if(strcmp(str,"0") == 0)
{
floyd();
if(map['b']['m'] == 1)
{
cout<<"Yes."<<endl;
}
else
{
cout<<"No."<<endl;
}
memset(map,0,sizeof(map));
}
else
{
int len = strlen(str);
map[str[0]][str[len-1]] = 1;
}
}
return 0;
}

自己犯的错误:

for(char i='a';i<='z';i++)
            for(char j='a';j<='z';j++)
               for(char k='a';k<='z';k++)
                {
                    if(judge[adj[i]][adj[j]]==1&&judge[adj[j]][adj[k]]==1)
                        {
                            judge[adj[i]][adj[k]]=1;
                        }
                }

结合Floyd做法来实现。(尽管DP原理偶还不是很懂。)

传递闭包自己写的,来一个错误例子  bg  ga am....自己写这个显然可以找到反例。这个应该没问题。

另外数组下标是可以char类型的。

HDU1181【有向图的传递闭包】的更多相关文章

  1. Floyd-Warshall算法计算有向图的传递闭包

    Floyd-Warshall算法是用来求解所有结点对最短路径的知名算法,其还有一个重要的用途就是求解有向图的传递闭包,下面就让我来介绍算法导论中关于有向图闭包计算的有关记载吧. 有向图的传递闭包:我们 ...

  2. poj3660 Cow Contest(Floyd-Warshall方法求有向图的传递闭包)

    poj3660 题意: 有n头牛, 给你m对关系(a, b)表示牛a能打败牛b, 求在给出的这些关系下, 能确定多少牛的排名. 分析: 在这呢先说一下关系闭包: 关系闭包有三种: 自反闭包(r), 对 ...

  3. UVa 247 - Calling Circles(Floyd求有向图的传递闭包)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  4. POJ-3660.Cow Contest(有向图的传递闭包)

      Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17797   Accepted: 9893 De ...

  5. uva247 - Calling Circles(传递闭包+DFS)

    题意:两人相互打电话(直接或间接),则在一个电话圈.即a给b打电话,b给c打电话,则a给c间接打电话. 注意:1.注意标记.2.注意输出格式. #include<iostream> #in ...

  6. 最短路径—Dijkstra算法和Floyd算法

    原文链接:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html 最后边附有我根据文中Dijkstra算法的描述使用jav ...

  7. Floyd算法解决多源最短路径问题

    Floyd-Warshall算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包. Floyd-Warshall算法 ...

  8. [ACM_模拟] POJ 1094 Sorting It All Out (拓扑排序+Floyd算法 判断关系是否矛盾或统一)

    Description An ascending sorted sequence of distinct values is one in which some form of a less-than ...

  9. 最短路径—Dijkstra算法和Floyd算法【转】

    本文来自博客园的文章:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html Dijkstra算法 1.定义概览 Dijk ...

随机推荐

  1. 获取文件数据流+叠加byte数组(给byte数组加包头包尾)

    OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "(*.mp4)|*.mp4|(*.*)|*.*"; ofd.Res ...

  2. BZOJ 1407: [Noi2002]Savage( 数论 )

    枚举答案, 然后O(N^2)枚举野人去判他们是否会在有生之年存在同山洞. 具体做法就是: 设第x年相遇, 则 Ci+x*Pi=Cj+x*Pj (mod M), 然后解同余方程. 复杂度应该是O(ans ...

  3. ExpandableListView 箭头样式

    ExpandableListVivew是ListView的子类,它在普通ListView的基础上进行了扩展,它把应用中的列表项分为几组,每组里 又可包含多个列表项.ExpandableListVive ...

  4. Main方法中传入参数

    ↓ 这个时候会报错: Instantiate the class:DonutShop java.lang.ClassNotFoundException: DonutShop    at java.ne ...

  5. Tomcat与Web服务器、应用服务器的关系

    Tomcat服务器是一个免费的开放源代码的Web应用服务器.因为Tomcat技术先进.性能稳定且免费,所以深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器. A ...

  6. bzoj 1066 : [SCOI2007]蜥蜴 网络流

    题目链接 给一个n*m的图, 里面每一个点代表一个石柱, 石柱有一个高度. 初始时有些石柱上面有蜥蜴, 蜥蜴可以跳到距离他曼哈顿距离小于等于d的任意一个石柱上,跳完后, 他原来所在的石柱高度会减一, ...

  7. JSWING小工具

    项目中需要一个发送指令到指定服务端,取得设备ID及检测数据的小工具,就利用jswing开发了一个简单小组件,最终效果如下: 代码很简单,具体片段如下: Window.java import java. ...

  8. JS笔记 入门第三

    认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树) 把上面的代码进行分 ...

  9. .net mvc笔记3_Understanding Razor Syntax

    Understanding Razor Syntax MVC3新视图引擎的名字叫做Razor.ASP.NET视图引擎处理web页面,寻找包含在服务器端指令的特殊元素.正如我们前面已经提到的,标准的AS ...

  10. cocos2dx CCLayerColor和CCLayerColor

    在cocos2dx中,默认的CCLayer背景是黑色的,有些时候需要特殊的Layer,所以cocos2dx中提供了这两种Layer CCLayerColor是可以改变背景色的Layer,示例如下: C ...