• Codeforces Round #628 (Div. 2)C. Ehab and Path-etic MEXs(构造+树)


    题目链接:https://codeforces.com/contest/1325/problem/C

    题目意思:给定一棵树所有的边,对所有的边进行标号,询问任意两点Mex的最大值最小的的标号方案(输出任何一种)。

    Mex(u,v)表示从u到v的简单路径中没有出现的最小标号。

    题目思路:根据大佬的说法(大佬原话),只要有一个点的度数大于2,那么三个出边分别连0、1、2就可以了,身下的随便连,因为这样的话,任何一个Mex(u,v)值是一定一定是不大于2的,不可能有一个路径同时走0、1、2这三天边。本来思路大体是对的,太菜不会建图、吐了。不过建出来可能也要wa一阵子。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 vector<int> v[100005];
     4 int ans[100005];
     5 int main()
     6 {
     7     int n;
     8     scanf("%d",&n);
     9     for (int i=1;i<n;i++)
    10     {
    11         int a,b;
    12         scanf("%d%d",&a,&b);
    13         v[a].push_back(i);
    14         v[b].push_back(i);
    15         ans[i]=-1;
    16     }
    17     pair<int,int> mx(0,0);
    18     for (int i=1;i<=n;i++)
    19     mx=max(mx,make_pair((int)v[i].size(),i));
    20     int cur=0;
    21     for (int i:v[mx.second])
    22     ans[i]=cur++;
    23     for (int i=1;i<n;i++)
    24     {
    25         if (ans[i]==-1)
    26         ans[i]=cur++;
    27         printf("%d
    ",ans[i]);
    28     }
    29 }
  • 相关阅读:
    通配符
    Hibernate入门简介
    Java的参数传递是值传递?
    Java线程详解
    java基础总结
    谈谈对Spring IOC的理解
    Oracle SQL语句之常见优化方法总结--不定更新
    JVM 工作原理和流程
    Java中的String为什么是不可变的? -- String源码分析
    Spring AOP 简介
  • 原文地址:https://www.cnblogs.com/Mingusu/p/12496231.html
Copyright © 2020-2023  润新知