Codeforces - 1325C - Ehab and Path-etic MEXs(思维、树)

时间:2020-03-24
本文章向大家介绍Codeforces - 1325C - Ehab and Path-etic MEXs(思维、树),主要包括Codeforces - 1325C - Ehab and Path-etic MEXs(思维、树)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目链接
题目大意:给你一棵树让你给每个结点编一个号,使得每一条从一个结点到另一个结点的路径中没有出现过的最小的数字最小。
  1.如果一棵树是一条链的话,那么无论怎么编号,结果都是一样的。
  2.如果一棵树不是一条链,那么必定存在一个结点的度数大于\(3\),那么通过这个结点的路径只能走所有与他相连的若干条边中的两条,那么我们将与这个结点相连其中\(3\)条边编号为0、1、2的话,那么经过
这个结点的路中没有出现过的最小的数一定小于等于\(2\)。而对于没有经过这个结点的路径来说,最小值就是\(0\)

const int maxn = 1e5+10;
vector<P> g;
int cnt[maxn], n;
int main(void) {
    scanf("%d", &n);
    for (int i = 0, u, v; i<n-1; ++i) {
        scanf("%d%d", &u, &v);
        g.push_back(P(u, v));
        ++cnt[u], ++cnt[v];
    }
    int num = 0, root = -1;
    for (int i = 1; i<=n; ++i)
        if (cnt[i]>=3) {
            root = i;
            num = cnt[i];
            break;
        }
    for (int i = 0, num2 = 0; i<n-1; ++i) {
        if (g[i].first!=root && g[i].second!=root) printf("%d\n", num++);
        else printf("%d\n", num2++);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/shuitiangong/p/12558503.html