Codeforces Round #394 (Div. 2) E. Dasha and Puzzle —— 构造 + 贪心
来源:互联网 发布:软件项目管理总结报告 编辑:程序博客网 时间:2024/05/22 08:26
题目链接:http://codeforces.com/contest/761/problem/E
Dasha decided to have a rest after solving the problem. She had been ready to start her favourite activity — origami, but remembered the puzzle that she could not solve.
The tree is a non-oriented connected graph without cycles. In particular, there always are n - 1 edges in a tree with n vertices.
The puzzle is to position the vertices at the points of the Cartesian plane with integral coordinates, so that the segments between the vertices connected by edges are parallel to the coordinate axes. Also, the intersection of segments is allowed only at their ends. Distinct vertices should be placed at different points.
Help Dasha to find any suitable way to position the tree vertices on the plane.
It is guaranteed that if it is possible to position the tree vertices on the plane without violating the condition which is given above, then you can do it by using points with integral coordinates which don't exceed 1018 in absolute value.
The first line contains single integer n (1 ≤ n ≤ 30) — the number of vertices in the tree.
Each of next n - 1 lines contains two integers ui, vi (1 ≤ ui, vi ≤ n) that mean that the i-th edge of the tree connects vertices ui and vi.
It is guaranteed that the described graph is a tree.
If the puzzle doesn't have a solution then in the only line print "NO".
Otherwise, the first line should contain "YES". The next n lines should contain the pair of integers xi, yi (|xi|, |yi| ≤ 1018) — the coordinates of the point which corresponds to the i-th vertex of the tree.
If there are several solutions, print any of them.
71 21 32 42 53 63 7
YES0 01 00 12 01 -1-1 10 2
61 22 32 42 52 6
NO
41 22 33 4
YES3 34 35 36 3
In the first sample one of the possible positions of tree is:
代码如下:
#include<bits/stdc++.h>using namespace std;typedef long long LL;const int INF = 2e9;const LL LNF = 9e18;const int mod = 1e9+7;const int maxn = 30+10;int n, B = 1;vector<int>g[maxn];LL x[maxn], y[maxn], vis[maxn],d[maxn][5];void dfs(int u, LL xx, LL yy, LL t){ x[u] = xx; y[u] = yy; vis[u] = 1; for(int i = 0; i<g[u].size(); i++) { int v = g[u][i]; if(vis[v]) continue; if(d[u][1]==0) { d[u][1] = d[v][2] = 1; dfs(v, xx+(1<<t), yy, t-1); } else if(d[u][2]==0) { d[u][2] = d[v][1] = 1; dfs(v,xx-(1<<t), yy, t-1); } else if(d[u][3]==0) { d[u][3] = d[v][4] = 1; dfs(v,xx, yy+(1<<t), t-1); } else { d[u][4] = d[v][3] = 1; dfs(v,xx,yy-(1<<t), t-1); } }}int main(){ cin>>n; for(int i = 1; i<n; i++) { int u, v; cin>>u>>v; g[u].push_back(v); g[v].push_back(u); if(g[u].size()>4 || g[v].size()>4) B = 0; } dfs(1,0,0,30); if(!B) { puts("NO"); return 0; } puts("YES"); for(int i = 1; i<=n; i++) cout<<x[i]<<' '<<y[i]<<endl;}
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle —— 构造 + 贪心
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle(构造)
- Codeforces Round #394 (Div. 2)-E. Dasha and Puzzle(dfs)
- Codeforces Round #394 (Div. 2)E. Dasha and Puzzle【思维+Dfs构造】
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle 构造 坐标离散化
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle(想法题,构造题)
- Codeforces Round #394 (Div. 2) D. Dasha and Very Difficult Problem —— 贪心
- Codeforces Round #390 (Div. 2)E Dasha and cyclic table
- Codeforces 761E Dasha and Puzzle【构造,树dfs】
- Codeforces Round #394 (Div. 2) C. Dasha and Password 贪心+预处理+枚举
- Codeforces Round #394 (Div. 2) D. Dasha and Very Difficult Problem 贪心
- Codeforces Round #394 (Div. 2)D. Dasha and Very Difficult Problem【贪心】
- Codeforces Round #394 (Div. 2) D. Dasha and Very Difficult Problem 贪心,二分
- Codeforces Round #394 (Div. 2) B. Dasha and friends —— 暴力 or 最小表示法
- Codeforces Round #394 (Div. 2) C. Dasha and Password —— 枚举
- Codeforces Round #394 (Div. 2) C. Dasha and Password
- Codeforces Round #394 (Div. 2) Dasha and Password
- Codeforces Round #394 (Div. 2)Dasha and friends
- react dva 碎片01
- oracle中rownum详解
- hdu-4451 思维题
- Linux下安装mysql
- Go语言的安装与设置
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle —— 构造 + 贪心
- Android 如何判断当前线程是否是主线程
- React 中被忽略的函数组件(Functional Components)
- js事件浏览器兼容案例
- iOS 内存恶鬼drawRect
- K线绘制接口设计
- Oracle中的rownum不能使用大于>的问题
- Html+css学习笔记
- wust oj 1510 最长连续不下降序列