Gym 101482.H
来源:互联网 发布:单片机串口引脚 编辑:程序博客网 时间:2024/06/05 14:36
题意:给你一棵树,每个树有两个频道,相邻结点至少有一个频道相同,使得相邻结点的相同的频道的集合尽量的大。输出方案。第一个样例的集合大小为2,第二个样例大小的集合大小为6。
思路:直接dfs,标记所有用过的颜色,然后对每个孩子结点考虑一下,颜色v1是否用过,没用过用v1,打标记。否则用颜色v2,打标记。
#include <bits/stdc++.h>using namespace std;const int maxn = 10000 + 5;pair<int, int>ans[maxn];vector<int>G[maxn];int cnt, vis[maxn];void dfs(int cur, int fa, int v1, int v2){ int siz = G[cur].size(); ans[cur] = {v1, v2}; for(int i = 0; i < siz; i++) { int to = G[cur][i]; if(to == fa) continue; if(G[to].size() == 1) vis[v1] = vis[v2] = 1, dfs(to, cur, v1, v2); else if(vis[v1] == 0) vis[v1] = 1, dfs(to, cur, v1, cnt++); else vis[v2] = 1, dfs(to, cur, v2, cnt++); }}int main(){ int n; scanf("%d", &n); for(int i = 0; i < n - 1; i++) { int x, y; scanf("%d%d", &x, &y); G[x].push_back(y); G[y].push_back(x); } cnt = 3; dfs(1, -1, 1, 2); ans[1] = {1, 2}; for(int i = 1; i <= n; i++) printf("%d %d\n", ans[i].first, ans[i].second); return 0;}
阅读全文
0 0
- Gym 101482.H
- GYM 100523H
- codeforces GYM 100792H
- Gym 100712H Bridges
- Gym 100947H-Phobia
- Gym - 100735H
- Gym-101490H
- Gym 101164.H
- Gym 101246.H
- Gym 100825 H
- Gym 101201.H
- Gym 101617H
- Gym 100187H - Mysterious Photos
- Gym 100015H Hidden Code
- Gym-101257H Card【贪心】
- 【Codeforces Gym】100162 H Temperature
- 【GYM】101170H Hamiltonian Hypercube
- Gym 101128H想法题
- erlang 数据结构--(ord)dict
- 《计算机操作系统》总结三(内存管理)
- Datagrid让某行复选框置灰不能选
- 人工智能成手机新卖点?看华为Mate10有啥不一样
- python matplot画图
- Gym 101482.H
- NEUQACM OJ:1072--谭浩强C语言(第三版)习题9.3
- RecyclerView的多条目展示,使用OkHttp解析数据
- Linux系统基础(八)
- maven连接
- Ajax开发技术
- 有线网络(网关等)和无线网络通信(蓝牙跳频通信等)讲解
- Titanic : Machine Learning from Disaster
- 微软免费的开源代码编辑器Visual Studio Code 1.17新增多项功能