codeforces 1141G Privatization of Roads in Treeland
题目链接:http://codeforces.com/contest/1141/problem/G
题目大意:
给你一个无向连通图。每条边都有颜色,如果存在一个点的临边中有超过两条边颜色相同,这个点就不好。你要用最少的颜色涂完所有的边,保证不好的点不超过k。
反正吧,我没想过cfG题会这么水。不过过的人还真挺少的。(QaQ,比赛没看这题被F2空间卡崩了)
思路:
先离线处理下。
先记录所有点的度,然后大到小排序。找到度第k+1大的度。
这个度就是答案。
因为我可以认为大于答案的度的点都是不好的;
我们怎么找到这些点呢?
dfs遍历。
对于不好的点直接全部画1就好了。
#include <bits/stdc++.h>
using namespace std; //#define int long long
#define MAX 200010
#define fi first
#define se second map< pair<int,int> ,int>ans;
pair<int,int> x[MAX];
vector <int> y[MAX];
int z[MAX];
bool k[MAX]; bool cmp(const int a,const int b)
{
return a>b;
}
int Ans;
void dfs(int r,int b)
{
if(k[r])
{
return;
}
k[r]=true; int len=y[r].size(); if(len>Ans)
{
for(int i=; i<len; i++)
{
if(k[y[r][i]])continue;
ans[make_pair(r,y[r][i])]=;
ans[make_pair(y[r][i],r)]=;
dfs(y[r][i],);
}
}
else{
bool kk=false;
int cer=;
for(int i=; i<len; i++)
{
if(k[y[r][i]])continue;
cer++;
if(cer==b){
kk=true;
}
ans[make_pair(r,y[r][i])]=cer+kk;
ans[make_pair(y[r][i],r)]=cer+kk;
dfs(y[r][i],cer+kk);
}
} }
signed main()
{
ios::sync_with_stdio(false); int n,k; cin>>n>>k; for(int i=; i<=n-; i++)
{
cin>>x[i].fi>>x[i].se;
z[x[i].fi]++;
z[x[i].se]++;
y[x[i].fi].push_back(x[i].se);
y[x[i].se].push_back(x[i].fi);
} sort(z+,z++n,cmp); Ans=z[k+]; cout<<Ans<<endl;
dfs(,); for(int i=;i<n;i++){
cout<<ans[x[i]]<<" ";
}
return ;
}
codeforces 1141G Privatization of Roads in Treeland的更多相关文章
- 【CF1141G】Privatization of Roads in Treeland
题目大意:给定一个 N 个点的无根树,现给这个树进行染色.定义一个节点是坏点,若满足与该节点相连的至少两条边是相同的颜色,求至多有 k 个坏点的情况下最少需要几种颜色才能进行合法染色. 题解:考虑一个 ...
- Codeforces 191C Fools and Roads(树链拆分)
题目链接:Codeforces 191C Fools and Roads 题目大意:给定一个N节点的数.然后有M次操作,每次从u移动到v.问说每条边被移动过的次数. 解题思路:树链剖分维护边,用一个数 ...
- Codeforces 806 D.Prishable Roads
Codeforces 806 D.Prishable Roads 题目大意:给出一张完全图,你需要选取其中的一些有向边,连成一个树形图,树形图中每个点的贡献是其到根节点路径上每一条边的边权最小值,现在 ...
- codeforces 711D D. Directed Roads(dfs)
题目链接: D. Directed Roads time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- Codeforces 711 D. Directed Roads (DFS判环)
题目链接:http://codeforces.com/problemset/problem/711/D 给你一个n个节点n条边的有向图,可以把一条边反向,现在问有多少种方式可以使这个图没有环. 每个连 ...
- Codeforces 746 G. New Roads
题目链接:http://codeforces.com/contest/746/problem/G mamaya,不知道YY了一个什么做法就这样过去了啊 2333 首先我显然可以随便构造出一棵树满足他所 ...
- Codeforces 543.B Destroying Roads
B. Destroying Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 【CodeForces】671 D. Roads in Yusland
[题目]D. Roads in Yusland [题意]给定n个点的树,m条从下往上的链,每条链代价ci,求最少代价使得链覆盖所有边.n,m<=3*10^5,ci<=10^9,time=4 ...
- Codeforces 583 DIV2 Asphalting Roads 模拟
原题链接:http://codeforces.com/problemset/problem/583/A 题意: 很迷很迷,表示没看懂..但是你看样例就秒懂了 题解: 照着样例模拟就好 代码: #inc ...
随机推荐
- MSSQL · 最佳实践 · 利用文件组实现冷热数据隔离备份方案
文件组的基本知识点介绍完毕后,根据场景引入中的内容,我们将利用SQL Server文件组技术来实现冷热数据隔离备份的方案设计介绍如下. 设计分析 由于payment数据库过大,超过10TB,单次全量备 ...
- 乘风破浪:LeetCode真题_026_Remove Duplicates from Sorted Array
乘风破浪:LeetCode真题_026_Remove Duplicates from Sorted Array 一.前言 我们这次的实验是去除重复的有序数组元素,有大体两种算法. 二.Remo ...
- Geth命令用法-参数详解 and 以太坊源码文件目录
本文是对以太坊客户端geth命令的解析 命令用法 geth [选项] 命令 [命令选项] [参数-] 版本 1.7.3-stable 命令 account 管理账户 attach 启动交互式JavaS ...
- Opatching PSU in Oracle Database 11g Release 2 RAC on RHEL6
Opatching PSU in Oracle Database 11g Release 2(11.2.0.4) RAC on RHEL6 1) 升级opatch工具 1.1) For GI home ...
- Postman-断言和Runner
断言(部分) // 推荐用全等 ===,确保类型和值都一致 tests['Status code is 200'] = responseCode.code === 200; //判断响应结果是否是20 ...
- screen命令使用
screen -S + name:创建一个名字叫做name的会话.在里面执行你想要执行的程序,再用Ctrl+a+d退出,让会话Detached,这样就能保证你的任务在后台一直运行,也不会随着终端的关闭 ...
- PAT B1015 德才论 (25 分)
宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人 ...
- JAVA springmvc参数
一.简单参数: package jd.com.contronller; import jd.com.projo.goods; import org.springframework.stereotype ...
- MSMQ消息队列总结
1.总体介绍: http://www.cnblogs.com/beniao/archive/2008/06/26/1229934.html 2.windows服务各项参数介绍及安装 https://w ...
- 纯css实现弹窗左右垂直居中效果
1.HTML <div class="container"> <div class="dialog"> <div class=&q ...