zoukankan      html  css  js  c++  java
  • 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类型的。

  • 相关阅读:
    5.2 HTML5表单与PHP交互
    5.1 HTML5表单的创建
    4.3 HTML5布局的使用
    MATLAB矩阵——2.5稀疏矩阵
    MATLAB矩阵——2.4矩阵的特征值与特征向量
    MATLAB矩阵——2.3矩阵求值
    MATLAB矩阵处理——2.2矩阵变换
    MATLAB矩阵处理——2.1特殊矩阵
    MATLAB基础知识——1.6基本运算
    MATLAB基础知识——1.5矩阵元素的引用
  • 原文地址:https://www.cnblogs.com/pangblog/p/3295249.html
Copyright © 2011-2022 走看看