HDU1181【有向图的传递闭包】

HDU1181【有向图的传递闭包】

题目链接: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类型的。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110029.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 华为上机练习题–姓名夫妻相「建议收藏」

    华为上机练习题–姓名夫妻相

    2022年1月30日
    46
  • MD5加密概述,原理及实现

    MD5加密概述,原理及实现MD5概述:MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要(32位的数字字母混合码)。MD5主要特点:不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(一个MD5理论上的确是可能对应无数多个原文的,因为MD5是有限多个的而原文可以是无数多个。比如主流使用的MD5将任意长度的“字节串映射为一个128bit的大整数…

    2022年7月11日
    23
  • c#启动外部程序_winform程序自动更新

    c#启动外部程序_winform程序自动更新//class里面放入这段代码[DllImport(“shell32.dll”)]publicstaticexternintShellExecute(IntPtrhwnd,StringBuilderlpszOp,StringBuilderlpszFile,StringBuilderlpszParams,StringBuilderlpszDir,intFsShowCmd);//需要打开的地方插入此段代码ShellExecute(IntPtr.Zero,newStr

    2022年8月30日
    3
  • python语言变量命名规则有什-以下选项中,符合Python语言变量命名规则的是_学小易找答案…

    python语言变量命名规则有什-以下选项中,符合Python语言变量命名规则的是_学小易找答案…【填空题】与文件系统相比,数据库系统的数据冗余度___________,数据共享性___________。【填空题】在数据库体系结构中,两级数据映象分别是指___________之间的数据映象与___________之间的数据映象。【判断题】认知决定情绪的内容。【判断题】饥饿感是纯生理现象与心理、文化、心境无关。【判断题】拆卸活塞连杆组时需逐缸进行,不允许一次拆开全部的连杆轴瓦盖,而又不做标记地胡…

    2022年5月8日
    54
  • bs与cs的区别简述_cs客户端和bs客户端

    bs与cs的区别简述_cs客户端和bs客户端荐java适合开发bs结构,cs不是它的强项.C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQLServer。客户端需要安装专用的客户端软件。B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如NetscapeNavigator或Internet…

    2022年10月16日
    2
  • iis命令停止启动_更新并重启怎么取消

    iis命令停止启动_更新并重启怎么取消直接使用CMD我们可以操作很多事情,比如启动IIS,重启IIS,停止IIS重启IIS服务器,开始->运行->cmd(以下列出相关操作命令):iisreset /RESTART停止后启动iisreset/START启动IIS(如果停止)iisreset/STOP停止IIS(如果启动)iisreset/REBOOT重启电脑iisreset/REB…

    2025年5月23日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号