• POJ1094-Sorting It All Out-拓扑排序


    【题目大意】:
     
    给出 A“<”B 的关系图
     
    ①在第i个关系之chu后,得出XXXX 
     
    ②在第i个关系之后 出现错误(环)
     
    ③全部关系之后仍然无法排序
     
    【解题思路】:1.读一个数判断是否是②情况。
     
    2.利用Floyd更新 任意两元素之间关系,当更新数达到(n*n-n)/2 之后,得到①情况。
     
    3.数据全部读入之后,仍没有答案,得到③情况。
     1 #include "cstdio"
     2 #include "iostream"
     3 #include "cstring"
     4 using namespace std;
     5 int  E[30][30];
     6 int sum[30];
     7 void putout(int n)
     8 {
     9     int s;
    10     for (int i = 1; i <= n; i++)
    11     {
    12         s = 1;
    13         for (int j = 1; j <= n; j++)
    14             if (E[i][j] && i != j) s++;
    15         sum[s] = i;
    16     }
    17     for (int i = n; i >= 1 ; i--)
    18     {
    19         printf("%c", sum[i] + 'A' - 1);
    20     }
    21 
    22 }
    23 int main()
    24 {
    25     int n , m;
    26     bool wait;
    27     int ans = 0;
    28     while (cin >> n >> m && (n + m))
    29     {
    30         memset(E, 0, sizeof(E));
    31         char a, b;
    32         wait = true;
    33         ans = (n * n - n) / 2;
    34         for (int i = 1; i <= m ; i++)
    35         {
    36             scanf(" %c"<"%c", &a, &b);
    37 
    38             if (wait)
    39             {
    40                 if (E[b - 'A' + 1][a - 'A' + 1] == 1 || (a - 'A' + 1) == (b - 'A' + 1))
    41                 {
    42                     wait = false;
    43                     printf("Inconsistency found after %d relations.
    ", i);
    44                     continue;
    45                 }
    46                 if (E[a - 'A' + 1][b - 'A' + 1] == 0)
    47                 {
    48                     E[a - 'A' + 1][b - 'A' + 1] = 1;
    49                     ans--;
    50                 }
    51                 for (int k = 1 ; k <= n ; k++)
    52                     for (int j = 1; j <= n; j++)
    53                         for (int z = 1; z <= n; z++)
    54                             if (E[j][z] == 0 && E[j][k] == 1 && E[k][z] == 1 && (j != z))
    55                             {
    56                                 ans--;
    57                                 E[j][z] = 1;
    58                             }
    59                 if (!ans)
    60                 {
    61                     wait = false;
    62                     printf("Sorted sequence determined after %d relations: ", i);
    63                     putout(n);
    64                     printf(".
    ");
    65                     continue;
    66                 }
    67             }
    68         }
    69         if (wait) printf("Sorted sequence cannot be determined.
    ");
    70     }
    71 }
  • 相关阅读:
    9.16第一次上课关于HTML的小结
    9.22课堂记录
    9.19课堂记录
    html文档基本结构
    HTMl学习1
    HTML第一次学习笔记
    CSS3和CSS2.1的区别
    HTML5新元素
    第一课:HTML
    块级元素和行内元素
  • 原文地址:https://www.cnblogs.com/HITLJR/p/5964857.html
Copyright © 2020-2023  润新知