zoukankan      html  css  js  c++  java
  • Warshall算法(闭包)

    Warshall算法又叫floyd-Warshall算法,思想为i->j&&j->k,那么i->k

    图上点的先后,这道题不能用拓扑排序做,但是拓扑排序只能得到一个整体“不错”的序列,并不能说明任意两点的先后。

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 map <string, int> mp;
     6 int a[205][205], num;
     7 
     8 void op()
     9 {
    10     int i, j, k;
    11     num--;
    12     for(j=1;j<=num;j++)
    13     {
    14         for(i=1;i<=num;i++)
    15         {
    16             for(k=1;k<=num;k++)
    17             {
    18                 a[i][k]|=a[i][j]&a[j][k];
    19             }
    20         }
    21     }
    22 }
    23 
    24 int main()
    25 {
    26     int n, m, n1, n2;
    27     string s1, s2;
    28     scanf("%d %d", &n, &m);
    29     num = 1;
    30     getchar();
    31     while(n--)
    32     {
    33         cin >> s1;
    34         cin >> s2;
    35         cin >> s2;
    36         cin >> s2;
    37         cin >> s2;
    38         if(!mp[s1]) mp[s1] = num++;
    39         if(!mp[s2]) mp[s2] = num++;
    40         a[mp[s1]][mp[s2]] = 1;
    41     }
    42     op();
    43     while(m--)
    44     {
    45         cin >> s1;
    46         cin >> s2;
    47         cin >> s2;
    48         cin >> s2;
    49         cin >> s2;
    50         n1 = mp[s1];
    51         n2 = mp[s2];
    52         if(a[n1][n2]) printf("Fact
    ");
    53         else if(a[n2][n1]) printf("Alternative Fact
    ");
    54         else printf("Pants on Fire
    ");
    55     }
    56     return 0;
    57 }
  • 相关阅读:
    2019前端面试系列——CSS面试题
    面试题——数组转树结构
    前端安全
    webpack入门——构建简易版vue-cli
    [] == ![],走进==隐式转换的世界
    Vue图片懒加载插件
    JS常用时间处理方法
    Vue中实现token验证
    VSCode基本配置
    打乱数组——shuffle
  • 原文地址:https://www.cnblogs.com/0xiaoyu/p/12840290.html
Copyright © 2011-2022 走看看