Codeforces573C. Bear and Drawing

http://codeforces.com/problemset/problem/573/C

  给一颗树,问是否能画在两行平行的点格图上(无限长),边长随意,不能相交。

#include<bits/stdc++.h>
const int maxn=1e5+15;
using namespace std;
vector<int> g[maxn];
int n,leg[maxn];
bool mark[maxn];
void init(){
    scanf("%d",&n);
    for (int u,v,i=1;i<n;++i){
        scanf("%d%d",&u,&v);
        g[u].push_back(v);
        g[v].push_back(u);
    }
}
void dfs(int u,int f){
    if (g[u].size()<=2){
        mark[u]=1;
        for (int i=0;i<g[u].size();++i)
            if (g[u][i]!=f) dfs(g[u][i],u);
    }
}
void work(){
    for (int i=1;i<=n;++i)
        if (g[i].size()==1) dfs(i,0);
    for (int u=1;u<=n;++u) if (!mark[u])
        for (int i=0;i<g[u].size();++i) if (mark[g[u][i]])
            ++leg[u];
    for (int u=1;u<=n;++u) if (!mark[u]){
        int cnt=0;
        for (int i=0;i<g[u].size();++i) if (!mark[g[u][i]])
            if (g[g[u][i]].size()>min(leg[g[u][i]],2)+1) ++cnt;
        if (cnt>2){puts("No");return;}
    }
    puts("Yes");
}
int main(){
    init();
    work();
    return 0;
}

my code

时间: 2024-10-12 02:30:23

Codeforces573C. Bear and Drawing的相关文章

E. Bear and Drawing

time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Limak is a little bear who learns to draw. People usually start with houses, fences and flowers but why would bears do it? Limak lives in the

codeforces 573C Bear and Drawing

Limak is a little bear who learns to draw. People usually start with houses, fences and flowers but why would bears do it? Limak lives in the forest and he decides to draw a tree. Recall that tree is a connected graph consisting of n vertices and n -

CF573C Bear and Drawing 构造+树论

正解:构造 解题报告: 传送门! 这题首先可以画下图找下规律,,,然后通过找规律可以发现,最终的方案一定是一条主干+一些枝条,而且这些枝条的分杈一定小于等于2 明确一下主干的定义,最左边的节点和最右边的节点之间的路径为主干 如图 强行证明一下吼,,, 因为是两排平行的“钉子板” 所以如果一个分枝点想要有超过2个儿子结点 因为在同侧最多有两条边 就一定要往另一边伸至少一条边 这样就因为这条边挡住了一侧(比如说左侧) 那么剩下的边只能往右侧伸展了 那它向另一侧伸的边伸出的子树中的叶子节点一定有一个是

CF 574E(Bear and Drawing-2*n点阵画树)

E. Bear and Drawing time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Limak is a little bear who learns to draw. People usually start with houses, fences and flowers but why would bears do it

Codeforces掉分记 round318(div2)

Codeforces掉分记 round318(div2) 又升回紫名了233,这一次就差一点点就AK了,还没有AK过. (以下题目描述摘自codeforces) A题 Bear and Elections 题目描述 Limak is a grizzly bear who desires power and adoration. He wants to win in upcoming elections and rule over the Bearland. There are n candida

Codeforces Round #318(Div 1) 573A, 573B,573C

转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 这场的前两题完全是手速题...A题写了7分钟,交的时候已经500+了,好在B题出的速度勉强凑活吧,and C题也没有FST A. Bear and Poker Limak is an old brown bear. He often plays poker with his friends. Today they went to a casino. There are n pla

CodeForce 680B - Bear and Finding Criminals

Bear and Finding Criminals There are n cities in Bearland, numbered 1 through n. Cities are arranged in one long row. The distance between cities i and j is equal to |i - j|. Limak is a police officer. He lives in a city a. His job is to catch crimin

codeforces 653B B. Bear and Compressing(dfs)

题目链接: B. Bear and Compressing time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Limak is a little polar bear. Polar bears hate long strings and thus they like to compress them. You should al

codeforces 653A A. Bear and Three Balls(水题)

题目链接: A. Bear and Three Balls time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Limak is a little polar bear. He has n balls, the i-th ball has size ti. Limak wants to give one ball to each