Codeforces Round #547 (Div. 3) G 贪心
2024-09-20 20:42:23
https://codeforces.com/contest/1141/problem/G
题意
在一棵有n个点的树上给边染色,连在同一个点上的边颜色不能相同,除非舍弃掉这个点,问最少需要多少种颜色来染一棵树
题解
- 选择弃掉度数最高的k个点,然后第k+1个点的度数就是答案
代码
#include<bits/stdc++.h>
#define N 200005
#define pb push_back
using namespace std;
int n,k,u,v,in[N],c[N],m,i;
struct node{
int e,v;
};
vector<node>g[N];
bool cmp(int x,int y){
return x>y;
}
void dfs(int u,int fa,int cl){
for(int i=0;i<g[u].size();i++){
int v=g[u][i].v,id=g[u][i].e;if(v==fa)continue;
if(cl>m)cl-=m;
c[id]=cl++;
dfs(v,u,cl);
}
}
int main(){
cin>>n>>k;
for(i=1;i<=n-1;i++){
scanf("%d%d",&u,&v);
in[u]++;in[v]++;
g[u].pb({i,v});
g[v].pb({i,u});
}
sort(in+1,in+n+1,cmp);
m=in[k+1];
dfs(1,0,1);
printf("%d\n",m);
for(i=1;i<=n-1;i++){
printf("%d ",c[i]);
}
}
最新文章
- apache tiles 页面模板的使用
- C#值类型参数传递的性能开销
- 修复AWS上EC2损坏的sshd_config文件
- 警惕SQL语句陷井
- Leetcode#123 Best Time to Buy and Sell Stock III
- join的一对多,去除重复,排序优先的group方法
- http://begin.lydsy.com/JudgeOnline/problem.php?id=2770(PKU2503 Babelfish)
- 201521123112《Java程序设计》第1周学习总结
- C# 使用 SmtpClient.SendAsync 方法发送邮件失败,总是返回 Cancelled
- Linux vim常用命令
- 使用Atlas进行元数据管理之Type(类型)
- List集合和JSON互转工具类
- Asp.net core中实现自动更新的Option
- 200. Number of Islands(DFS)
- Docker服务端和客户端
- 2017-6-6&;6-8/大型网站架构总结
- note:debugging requires the debug connect session system privilege
- Git SVN 版本控制 简介 总结 MD
- Java架构技术知识点梳理
- my SQL Workbench创建数据库