徐州联赛选拔赛 - 判断能否构成树

题目链接

思路:每条边对总度的贡献都是2,所以如果形成了一棵树,那么边一定是n-1条,总度就是2(n-1)。先把所有顶点的度加起来,判断是否等于2(n-1),如果不等,那一定就是Impossible了。但是相等就能断定能形成一棵树吗?来看看下面这个图

存在一个度为0的顶点,肯定就不能形成树咯。所以判断一下是否存在度为0的顶点就好了,注意只有一个顶点也是树哦。

AC代码:

 1 #include <cstdio>
 2
 3 int main()
 4 {
 5     int t, n, v;
 6     scanf("%d", &t);
 7     while (t--)
 8     {
 9         scanf("%d", &n);
10         int sum = 0;
11         bool zero = false;
12         for (int i = 0; i < n; i++)
13         {
14             scanf("%d", &v), sum += v;
15             if (v == 0)
16                 zero = true;
17         }
18         if (n == 1 && zero)
19             puts("Possible");
20         else if (sum == n + n - 2 && !zero)
21             puts("Possible");
22         else
23             puts("Impossible");
24     }
25     return 0;
26 }
时间: 2024-10-05 23:48:08

徐州联赛选拔赛 - 判断能否构成树的相关文章

徐州联赛选拔赛 - 高效安排人员

题目链接 思路:这是一道动态规划的题目,估计好多人去用贪心算法了,反正比赛时我想的贪心策略很容易找到反例Orz.题目就相当于选取一些区间去覆盖[0,T],每个区间有个价格,要求总价格最小.容易想到,如果覆盖[0,T]区间的价格是最小的,那么覆盖[0,T']的价格也必须是最小的,说明这个问题具有最优子结构性质.但是T的范围实在太大了,直接动态规划肯定是不行的.考虑到存在很多等效的时间点,我们可以把每个区间的时间离散化,但还保证他们的相对位置,这就把数据压缩到很小了,最多20W.然后对离散化后的时间

UVA10462:Is There A Second Way Left? (判断次小生成树)

Is There A Second Way Left? Description: Nasa, being the most talented programmer of his time, can’t think things to be so simple. Recently all his neighbors have decided to connect themselves over a network (actually all of them want to share a broa

如何判断单链表是否存在环 &amp; 判断两链表是否相交

给定一个单链表,只给出头指针h: 1.如何判断是否存在环? 2.如何知道环的长度? 3.如何找出环的连接点在哪里? 4.带环链表的长度是多少? 解法: 1.对于问题1,使用追赶的方法,设定两个指针slow.fast,从头指针开始,每次分别前进1步.2步.如存在环,则两者相遇:如不存在环,fast遇到NULL退出. 2.对于问题2,记录下问题1的碰撞点p,slow.fast从该点开始,再次碰撞所走过的操作数就是环的长度s. 3.问题3:有定理:碰撞点p到连接点的距离=头指针到连接点的距离,因此,分

poj1679——The Unique MST(次小生成树,Kruskal)

Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spanning Tree): Consider a connected, undirected graph G = (V, E). A spanning tree of G is a subgraph of G, say T = (V', E'), with the followin

求lca(模板)

洛谷——P3379 [模板]最近公共祖先(LCA) 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每行包含两个正整数x.y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树). 接下来M行每行包含两个正整数a.b,表示询问a结点和b结点的最近公共祖先. 输出格式: 输出包含M行,每行包含一个正整数,依次为每一个询问的结果. 输入输出样

(╭ ̄3 ̄)╭ 小希的迷宫II

(╭ ̄3 ̄)╭ 小希的迷宫II TimeLimit: 2000/1000 MS (Java/Others)  MenoryLimit: 65536/32768 K (Java/Others) 64-bit integer IO format:%I64d Problem Description 上次Gardon的迷宫城堡小希玩了很久,现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是单向连通的,就是说如果有一个通道连通了房间A和B,那么它只能从房间A

P3379 【模板】最近公共祖先(LCA)

题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每行包含两个正整数x.y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树). 接下来M行每行包含两个正整数a.b,表示询问a结点和b结点的最近公共祖先. 输出格式: 输出包含M行,每行包含一个正整数,依次为每一个询问的结果. 输入输出样例 输入样例#1: 5 5 4 3 1 2 4 5

机器学习算法的R语言实现(二):决策树

1.介绍 ?决策树(decision tree)是一种有监督的机器学习算法,是一个分类算法.在给定训练集的条件下,生成一个自顶而下的决策树,树的根为起点,树的叶子为样本的分类,从根到叶子的路径就是一个样本进行分类的过程. ?下图为一个决策树的例子,见http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91 ? 可见,决策树上的判断节点是对某一个属性进行判断,生成的路径数量为该属性可能的取值,最终到叶子节点时,就完成一个分类(或预测).决策树

[模板]LCA的倍增求法解析

题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每行包含两个正整数x.y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树). 接下来M行每行包含两个正整数a.b,表示询问a结点和b结点的最近公共祖先. 输出格式: 输出包含M行,每行包含一个正整数,依次为每一个询问的结果. 输入输出样例 输入样例#1: 5 5 4 3 1 2 4 5