首页 > 其他分享 >村子(最小化)

村子(最小化)

时间:2023-07-10 17:23:29浏览次数:30  
标签:村子 pp int rev back cin push 最小化

解题:贪心

很明显越靠近越好。随便从一个点出发,按照翻的排列方式来选择和父亲链接还是和兄弟链接。记得每次加2哦~~~~

具体代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 500;
int n, par[N], swp[N], p[N];
vector<int>g[N], rev;
void dfs(int a, int pp) {
    rev.push_back(a);
    par[a] = pp;
    for (auto& x : g[a]) {
        if (x == pp)continue;
        dfs(x, a);
    }
}
signed main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    int n; cin >> n;
    for (int i = 0; i < n - 1; i++) {
        int u, v; cin >> u >> v;
        g[u].push_back(v); g[v].push_back(u);
    }
    for (int i = 1; i <= n; i++) p[i] = i;
    dfs(1, 0);
    reverse(rev.begin(), rev.end());
    int ans = 0;
    for (int i = 0; i < n; i++) {
        int u = rev[i];
        if (!swp[u]) {
            int up = par[u];
            if (par[u] == 0) up = g[u][0];
            swp[u] = swp[up] = 1;
            swap(p[u], p[up]);
            ans += 2;
        }
    }
    cout << ans << '\n';
    for (int i = 1; i <= n; i++) cout << p[i] << ' ';
    cout << '\n';
}

 

标签:村子,pp,int,rev,back,cin,push,最小化
From: https://www.cnblogs.com/yonglicp/p/17541732.html

相关文章

  • hive最小化部署 生产部署 hiveserver2 代理对象 和metastore服务
    自带的derbe的数据库,建表后就是在路径下新建了一个文件,映射成表的概念,同时在yarn会去执行,但是很多数据量很小的操作不会提交到yarn从stu表读数据的时候用的inputformat写数据的时候用的outputformat   metastore服务保存表名和文件路径之间的映射关系  嵌入......
  • 2646. 最小化旅行的价格总和 (Hard)
    问题描述2646.最小化旅行的价格总和(Hard)现有一棵无向、无根的树,树中有n个节点,按从0到n-1编号。给你一个整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[aᵢ,bᵢ]表示树中节点aᵢ和bᵢ之间存在一条边。每个节点都关联一个价格。给你一个......
  • Qt里怎么恢复一个被最小化的窗口
    这个需求出现在窗口最小化之后又被再次运行的时候。很多用户往往不去注意窗口是否已经存在,而是经常直接再次执行打开窗口操作。为了拦截这种情况,通常我们会去检测到窗口是否已经存在,如果存在则把它恢复正常,而不是再新创建一个。这个操作是通过ShowNormal()实现的,但这个函数在wi......
  • 使用Rust编写的程序,可以使用快捷键启动、最小化、最大化和关闭窗口
     以下是一个使用Rust编写的程序,可以使用快捷键启动、最小化、最大化和关闭窗口: usegtk::{prelude::*,Application,ApplicationWindow,WindowPosition};usegdk::enums::key;fnmain(){letapplication=Application::new(Some("com.example"),Default::defau......
  • 基于分时电价,采用改进粒子群算法,以最小化系统峰谷差率和用户成本最少为目标,并考虑电池
    基于分时电价,采用改进粒子群算法,以最小化系统峰谷差率和用户成本最少为目标,并考虑电池寿命和充电功率等约束条件,优化电动汽车充放电。参考论文:基于V2G的电动汽车充放电优化调度策略有注释简单易懂,可自己调整参数。ID:4525670541175133......
  • C# 实现winform软件最小化到系统托盘,开机自启动
    C#实现winform软件最小化到系统托盘,开机自启动 问题描述  用户的电脑是win7系统,应用系统在用户电脑上运行时部分功能需要访问注册表,但是使用这些功能时会提示用户没有权限访问注册表。原因分析  win7及后续高版本系统对用户的权限控制比较严,就算用户的权限较高,但用户启......
  • MFC-IsIconic判断窗口是否最小化
     HWNDhWnd=NULL;UINTfunc1(LPVOIDpParam)//线程函数{BOOLbb;for(inti=0;i<1000;i++){bb=IsIconic(hWnd);//判断窗口是否最小化/*参数1:HWNDhWnd窗口句柄返回值:已经最小化返回TRUE,......
  • 最小化的项目管理流程
    最小化的项目管理流程RDMP敏捷项目管理的最小化流程涵盖了项目启动、执行和收尾的全流程工作。这种流程串联确保项目能够在可控范围内完成,大致流程如下:项目启动流程:由高层领导授权项目任务书启动,各参与方对项目有共识。项目执行:为不同的成员分配工作,监督、并管理问题和风险......
  • 最小化项目管理流程,并解决当前遇到的问题
    最小化项目管理流程,并解决当前遇到的问题。实时更新成果清单和进度为了解决实时更新成果清单和进度的问题,建议您使用一些项目管理工具,如Trello、Asana、JIRA等。这些工具可以帮助您协同更新和跟踪成果清单,同时监测项目的进度和状态。您可以将任务分配给不同的团队成员,并实时跟......
  • GNOME 窗口添加最大化、最小化按钮
    1、安装工具使用终端命令安装优化工具yuminstallgnome-tweak-tool 2、配置gnome-tweak-tool安装完毕后,在应用程序的“工具”中找到“优化”程序打开。然后选择“窗口标题栏”,将里面的“最大化”、“最小化”选项打开即可。  转载:https://www.likecs.com/show-308......