zoukankan      html  css  js  c++  java
  • Codeforces

    题目链接
    题目大意:给你一棵树让你给每个结点编一个号,使得每一条从一个结点到另一个结点的路径中没有出现过的最小的数字最小。
      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
    ", num++);
            else printf("%d
    ", num2++);
        }
        return 0;
    }
    
  • 相关阅读:
    Ajax请求如何设置csrf_token
    js和jQuery实现的Ajax
    Ajax简介
    JSON
    Django基础之中间件的执行流程
    Django基础之中间件
    Django基础之ModelForm
    Django基础之form表单的补充进阶
    APK的反编译(获取代码和资源文件)
    Smali语法基础
  • 原文地址:https://www.cnblogs.com/shuitiangong/p/12558503.html
Copyright © 2011-2022 走看看