SCU 4313 把一棵树切成每段K个点 (n%k)剩下的点不管
题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=4313
#include<stdio.h>
#include<string.h> #define N 200001 struct node{
int f,t,fn,tn,nex;
}edge[N];
int edgenum, head[N];
void addedge(int u, int v){
node E={u,v,0,0,head[u]};
edge[edgenum] = E;
head[u] = edgenum++;
}
int n,K,m; //n个点 m条边
int du[N],dp[N];
bool vis[N], use[N];
int ans ;
void dfs(int x){
for(int i=head[x]; i!=-1; i = edge[i].nex){
int v = edge[i].t;
if(!vis[v]){
vis[v] = 1;
dfs(v);
dp[x] += dp[v];
edge[i].tn = dp[v];
edge[i].fn = n - edge[i].tn;
if(edge[i].tn %K==0 && !use[v] )ans++, use[v] = 1; if(edge[i].fn %K==0 && !use[x] )ans++, use[x] = 1;
}
}
}
int main(){
int T,i,j;scanf("%d",&T);
while(T--){
scanf("%d %d",&n,&K); memset(head,-1,sizeof(head)), edgenum = 0;
memset(du,0,sizeof(du));
m=n-1;
while(m--){
int u,v;scanf("%d %d",&u,&v);
addedge(u,v);
addedge(v,u);
du[u]++,du[v]++;
}
memset(vis,0,sizeof(vis));
memset(use,0,sizeof(use));
for(int i=1;i<=n;i++)dp[i] = 1;
ans = 0;
for(int i=1;i<=n;i++)
if(du[i] == 1)
{ vis[i]=1, dfs(i); break;} if(ans>= n/K)printf("YES\n");
else printf("NO\n"); }
return 0;
}
/*
2
4 2
1 2
2 3
3 4
4 2
1 2
1 3
1 4 */
SCU 4313 把一棵树切成每段K个点 (n%k)剩下的点不管的更多相关文章
- java读取txt文件的2中方法---并将内容(每一行以固定的字符分割切成2段)存到map中去
#java读取txt文件的第一种方法 /** * 方法:readTxt * 功能:读取txt文件并把txt文件的内容---每一行作为一个字符串加入到List中去 * 参数:txt文件的地址 * 返回: ...
- hdu4714 Tree2cycle 把树剪成链
题目是问把一棵树通过剪边.加边形成一个环的最小代价. 分成两步,先把树剪成一些链,再把链连接成一个环. 设一棵有n个节点的树,剪掉X条边后,形成L条链. 那么代价为X+L. n-1-X=edgeNum ...
- MS - 1 - 把二元查找树转变成排序的双向链表
## 1. 把二元查找树转变成排序的双向链表 ## ### 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. ### 要求不能创建任何新的结点,只调整指针的指向. 10 ...
- Codeforces - 828E DNA Evolution —— 很多棵树状数组
题目链接:http://codeforces.com/contest/828/problem/E E. DNA Evolution time limit per test 2 seconds memo ...
- 【Data structure & Algorithm】把二元查找树转变成排序的双向链表
把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表,要求不能创建任何新节点,只调整指针指向. 比如将二元查找树 10 / \ 6 ...
- ZT:如果有来生,要做一棵树
出处:https://zhidao.baidu.com/question/393644025.html 原以为是三毛所作,想不到还有争议. 如果有来生,要做一棵树, 站成永恒.没有悲欢的姿势, 一半在 ...
- 介绍一个可以将Expression表达式树解析成Transact-SQL的项目Expression2Sql
一.Expression2Sql介绍 Expression2Sql是一个可以将Expression表达式树解析成Transact-SQL的项目.简单易用,几分钟即可上手使用,因为博主在设计Expres ...
- LeetCode——Same Tree(判断两棵树是否相同)
问题: Given two binary trees, write a function to check if they are equal or not. Two binary trees are ...
- 二元查找树转变成排序的双向链表之C#算法实现
此题为July在CSDN发布的微软编程面试100题中的第一题,觉得蛮有趣的,今天也拿过来玩玩,July的代码用的是C++实现,可能因为有指针的原因吧,感觉看起来相对比较容易理解整个的实现过程,而我,试 ...
随机推荐
- Scrapy基础------css选择器基础
基本语法: * 选择所有节点 #container 选择id为container的节点 .container 选择所有class包含container的节点 li a 选取所有li 下所有a节点 ul ...
- CodeForces 602C The Two Routes(最短路)
Description In Absurdistan, there are n towns (numbered 1 through n) and m bidirectional railways. T ...
- CDOJ 1314 Hash Perfectly FFT
Hash Perfectly 题目连接: http://acm.uestc.edu.cn/#/problem/show/1314 Description In computing, a hash ta ...
- c语言把mysql数据库语句和变量封装为一个语句
我有一个语句 sql = "insert into talbe_name values(name,age)" 其中name和age两个变量根据外面的输入来确定,有两种方法 1: ...
- React Native中树 TreeView 实现(2)
接上文,剩下的展示工作是重中之重,首先确定节点的布局草稿——也就是如何render item: 在此之前还有一个重要的问题就是选择何种组件盛放展示子结点,一般有如下两种: 使用scrollview加载 ...
- Delphi插件创建、调试与使用应用程序扩展
Delphi插件创建.调试与使用应用程序扩展 翻译 : MiracleZ 有没有使用过Adobe Photoshop?如果用过,你就会对插件的概念比较熟悉.对外行人来说,插件仅仅是从外部提供给应用程 ...
- Delphi DLL制作和加载 Static, Dynamic, Delayed 以及 Shared-Memory Manager
一 Dll的制作一般分为以下几步:1 在一个DLL工程里写一个过程或函数2 写一个Exports关键字,在其下写过程的名称.不用写参数和调用后缀.二 参数传递1 参数类型最好与window C++的参 ...
- CMSIS-SVD Example (Schema Version 1.1)
<?xml version="1.0" encoding="utf-8"?> <!-- File naming: <vendor> ...
- 【转】2012年6月26 – PPS网络电视PHP工程师最新面试题
每一次面试都是一场较量,和面试官,更是和你自己! 前言:虽然面试职位是PHP工程师,但题目仅绝非限于PHP,甚至都没有多少PHP的题!inner peace!希望能给你带了一丝帮助. PPS网络电视面 ...
- WPF ClickOnce应用程序IIS部署发布攻略
WPF程序非常适合公司内网使用,唯一缺点就是客户端要安装.net框架4.0.优势也很明显,在客户端运行的是一个WinForm程序,自动下载,可以充分利用客户机的性能,而且是以当前的Windows用户权 ...