当前位置:网站首页>Codeforces Round #394 (Div. 2) E. Dasha and Puzzle

Codeforces Round #394 (Div. 2) E. Dasha and Puzzle

2022-06-21 18:07:00 不吃土司边

#include<bits/stdc++.h>

using namespace std;

#define X first
#define Y second
#define eps 1e-2
#define gcd __gcd
#define pb push_back
#define PI acos(-1.0)
#define lowbit(x) (x)&(-x)
#define bug printf("!!!!!\n");
#define mem(x,y) memset(x,y,sizeof(x))

typedef long long LL;
typedef long double LD;
typedef pair<int,int> pii;
typedef unsigned long long uLL;

const int maxn = 1e5+2;
const int INF  = 1<<30;
const int mod  = 1e9+7;

int in[maxn],n;
std::vector<int> v[maxn];
int dr[4][2]={
    {
    1,0},{
    0,1},{
    -1,0},{
    0,-1}};
pair<int,int> res[maxn];

void dfs(int x,int fa,int dep,int p1,int p2,int from){
    
    res[x]={
    p1,p2};
    // cout<<dep<<endl;
    // cout<<x<<" "<<fa<<" "<<p1<<" "<<p2<<" "<<from<<endl;
    int now=0;
    for(int i=0;i<v[x].size();i++){
    
        int to=v[x][i];
        if(to==fa) continue;
        if(now==from) ++now;
        int nx=p1+dr[now][0]*(1<<dep),ny=p2+dr[now][1]*(1<<dep);
        dfs(to,x,dep-1,nx,ny,(now+2)%4);
        ++now;
    }
}

void solve(){
    
    scanf("%d",&n);
    for(int i=1;i<n;i++){
    
        int x,y;scanf("%d%d",&x,&y);
        in[x]++;in[y]++;
        v[x].pb(y);v[y].pb(x);
        if(in[x]>4||in[y]>4){
    
            cout<<"NO"<<endl;
            return;
        }
    }
    dfs(1,0,30,0,0,-1);
    cout<<"YES"<<endl;
    for(int i=1;i<=n;i++){
    
        cout<<res[i].first<<" "<<res[i].second<<endl;
    }

    
    return;
}

int main()
{
    
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
// ios::sync_with_stdio(false);
    int t = 1;
    //scanf("%d",&t);
    while(t--){
    
    // printf("Case %d: ",cas++);
        solve();
    }
    return 0;
}
原网站

版权声明
本文为[不吃土司边]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_45714303/article/details/125389792

随机推荐