• POJ2367-Genealogical tree-拓扑排序


    【题目大意】:求一个有向图的任意一个拓扑排序序列。

    【解题思路】:普通拓扑排序。
    ①求出入度为零的点加入队列
    ②queue.front() 加入答案中
    ③queue.pop();并将当前点的边删除(当前点在队列中证明只有出边无入边)(即指向点入度r--)
    ④若指向点入度为0则push()
    ⑤重复②-④到队列为空。
    【注】 类似SPFA求最短路,开一个ifinq[]数组防止重复入队。
     1 #include "cstdio"
     2 #include "iostream"
     3 #include "vector"
     4 #include "queue"
     5 #include "cstring"
     6 using namespace std;
     7 vector<</span>int> E[105];
     8 int main()
     9 {
    10     int n;
    11     cin >> n;
    12     queue<</span>int> q;
    13     int r[105];
    14     bool inq[105];
    15     memset(inq, false, sizeof(inq));
    16     memset(r, 0, sizeof(r));
    17     for (int i = 1; i <= n ; i++)
    18     {
    19         int s;
    20         while (scanf("%d", &s) && s)
    21         {
    22             E[i].push_back(s);
    23             r[s] ++;
    24         }
    25     }
    26 
    27     for (int i = 1; i <= n ; i++)
    28     {
    29 
    30         if (!r[i])
    31         {
    32             q.push(i);
    33             inq[i] = true;
    34         }
    35     }
    36     bool k = true;
    37     while (!q.empty())
    38     {
    39         int now = q.front();
    40         q.pop();
    41         for (int i = 0; i < E[now].size(); i++)
    42         {
    43             r[E[now][i]]--;
    44 
    45             if ((r[E[now][i]] == 0) && (!inq[E[now][i]]))
    46             {
    47                 inq[E[now][i]] = true;
    48                 q.push(E[now][i]);
    49             }
    50         }
    51         if (k)
    52         {
    53             printf("%d", now);
    54             k = false;
    55         }
    56         else printf(" %d", now);
    57     }
    58     puts("");
    59 
    60 }
     
  • 相关阅读:
    分布式服务调用链路追踪——方案选型
    分布式服务调用链路追踪——Skywalking
    JVM——jhat命令
    JVM——jmap命令
    JVM——jstack命令
    JVM——jstat命令
    JVM——jinfo命令
    针对input添加padding后宽度变化问题
    HTTPS实现原理
    selenium异常捕获
  • 原文地址:https://www.cnblogs.com/HITLJR/p/5964867.html
Copyright © 2020-2023  润新知