图论

图论基础概念

图 ( G ) 由点集 ( V ) 和边集 ( E ) 构成,记为 ( G=(V,E) )。无向图中边 ( e\in E ) 为无序对 ((u,v)),有向图中边为有序对 ( u\to v ) 或 ((u,v))。

  • 简单图:不含重边和自环的图。
  • 树:不含环的无向连通图,满足 ( n=m+1 )(n 为点数,m 为边数)。
  • 有向无环图(DAG):不含环的有向图。

拓扑排序

针对 DAG 的一种排序方式,要求对于图中任意边 ( u\to v ),u 在排序结果中位置始终在 v 之前。

实现思路:

  1. 维护入度为 0 的点的队列
  2. 每次取出一个入度为 0 的点加入结果序列
  3. 删去该点及其所有出边,更新相关点的入度
  4. 重复步骤 2-3 直至队列空
void Sort() {
    queue<int> q;
    for (int i = 1; i <= n; ++i) {
        if (inDegree[i] == 0) q.push(i);
    }
    while (!q.empty()) {
        int u = q.front();
        q.pop();
        res.push_back(u);
        for (int v : adj[u]) {
            if (--inDegree[v] == 0) q.push(v);
        }
    }
}
posted @ 2025-08-10 22:31  ᝰꫛꫀꪝ_yqy  阅读(38)  评论(0)    收藏  举报
/**手机适配**/ @media only screen and (max-width: 767px) { header{width:100%} .banner{width: 100%;height: 100px;} .avatar{width: 80px;height: 80px;margin: 6px;} .avatar a{padding-top: 59px;width: 80px;height: 80px;background-size: 80px 78px;} .avatar a span{margin-top: 0px; padding-top: 0px; width: auto;height: auto;} .bloglist h3 {margin: 20px 0 10px 10px;} .bloglist figure {width:auto;margin-left: 4px;} .bloglist figure img {width: 90px;height: 60px;} .bloglist ul{width:64%} .dateview {width:100%;padding-left:4px;} .dateview span {margin: 0 3px;} .weixinnone,.thumbs{display: none} .right{width: 100%;margin-top: 22px} .right ul{width:64%;margin-left: 22px;} .weather{margin: 20px 50px;} .bloglinkli{display: block} footer{width:100%} }