POJ 2378 Tree Cutting:题意 求删除哪些单点后产生的森林中的每一棵树的大小都小于等于原树大小的一半

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=;
const int maxx=<<;
int t,n;
int f[maxn]={};
int vis[maxn]={};
struct nod{
int y;
int next;
}e[*maxn]={};
int head[maxn]={},tot=;
int ans[maxn]={},size=,sum=;
void init(int x,int y){
e[++tot].y=y;
e[tot].next=head[x];
head[x]=tot;
}
void dfs(int x){
int y;
vis[x]=;
int tmp=;
for(int i=head[x];i;i=e[i].next){
y=e[i].y;
if(!vis[y]){
dfs(y);
f[x]+=f[y]+;
tmp=max(f[y]+,tmp);
}
}
tmp=max(tmp,n-f[x]-);
if(tmp<size){
ans[++sum]=x;
}
}
int main(){
scanf("%d",&n);
size=n/+;
int x,y;
for(int i=;i<n;i++){
scanf("%d%d",&x,&y);
init(x,y);
init(y,x);
}
dfs();
sort(ans+,ans++sum);
for(int i=;i<=sum;i++){
printf("%d\n",ans[i]);
}
return ;
}

POJ 3140 Contestants Division:题意 删除某边后剩余两个联通块节点数的差最小,输出这个差,

要用longlong,记得把上限设大...
 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=;
long long maxx=2000000000000000000LL;
int t,n,m;
long long f[maxn]={},v[maxn]={};
int vis[maxn]={};
struct nod{
int y;
int next;
}e[*maxn]={};
int head[maxn]={},tot;
long long ans,sum,bign;
void init(int x,int y){
e[++tot].y=y;
e[tot].next=head[x];
head[x]=tot;
}
inline long long mabs(long long x){
if(x<){
return -x;
}
return x;
}
void dfs(int x){
int y;
long long tmp=;
vis[x]=;
for(int i=head[x];i;i=e[i].next){
y=e[i].y;
if(!vis[y]){
dfs(y);
f[x]+=f[y];
tmp=mabs(bign-f[y]-f[y]);
ans=min(ans,tmp);
}
}
f[x]+=v[x];
}
void yu(){
bign=sum=;
tot=;
ans=maxx;
memset(f,,sizeof(f));
memset(vis,,sizeof(vis));
memset(head,,sizeof(head));
memset(v,,sizeof(v));
}
int main(){
for(int zz=;;zz++){
yu();
scanf("%d%d",&n,&m);
if(n==&&m==){
break;
}
int x,y;
for(int i=;i<=n;i++){
scanf("%lld",&v[i]);
bign+=v[i];
}
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
init(x,y);
init(y,x);
}
dfs();
printf("Case %d: %lld\n",zz,ans);
}
return ;
}

最新文章

  1. COGS130. [USACO Mar08] 游荡的奶牛[DP]
  2. Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)
  3. ubuntu中安装VMWare tools
  4. elasticsearch 口水篇(5)es分布式集群初探
  5. struts2类型转换器、 类型转换错误 以及INPUT view
  6. NOIP2010提高组 关押罪犯 -SilverN
  7. 30Springd的包扫描——&lt;context:component-scan base-package=” ”/&gt;
  8. 回调的代理(delegate)实现
  9. java实现读取文件内容(不同类型)
  10. IDEA中 @override报错的处理步骤
  11. 【转载】Apache kafka原理与特性(0.8V)
  12. 使用OpenFileDialog实现图片上传
  13. js识别终端类型
  14. HDU 4464 Browsing History(最大ASCII的和)
  15. IOS Cell 重影
  16. Socket实现-Socket I/O
  17. 在STEP7 TIA PORTAL中,设置模块的地址和设备名(Device name)
  18. IDE中使用System.getProperty()获取一些属性
  19. BeautifulSoup的基本操作
  20. Remainders Game (中国剩余定理)

热门文章

  1. 【leetcode 简单】第十七题 x 的平方根
  2. Linux 官方镜像源汇总
  3. HTML如何编写为桌面程序
  4. 【IDEA】IDEA中maven项目pom.xml依赖不生效解决
  5. webgote的例子(6)SQL注入(盲注)
  6. python基础之内置异常对象
  7. Ubuntu之镜像iso安装系统
  8. 用C#实现对MSSqlServer数据库的增删改查---Server层(WaterLevelSetServer.cs、DeviceSetServer.cs)
  9. Linux运维常用的几个命令介绍【转】
  10. 多个id或class属性相同的元素绑定事件