当前位置:网站首页>POJ 3140 contents division "suggestions collection"
POJ 3140 contents division "suggestions collection"
2022-07-07 20:59:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm the king of the whole stack .
The main idea of the topic :
Give me a tree . Find the minimum value of the sum of the node weights of the two subtrees after removing an edge .
Their thinking :
I don't know how to use tree DP do , It's just a DFS It's over . I hit back once .
Think about the code in detail .
Here's the code :
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <vector>
#include <string>
#include <map>
#include <queue>
using namespace std;
int min(int a,int b)
{
if(a>b)a=b;
return a;
}
int max(int a,int b)
{
if(a<b)a=b;
return a;
}
struct node
{
int to,next;
} edge[100005*2];
int n,m,cnt,head[100005];
long long weight[100005],min1,sum;
const long long inf = 100000000000000ll;
bool vis[100005];
void addedge(int u,int v)
{
edge[cnt].to=v;
edge[cnt].next=head[u];
head[u]=cnt++;
edge[cnt].to=u;
edge[cnt].next=head[v];
head[v]=cnt++;
}
bool chack(int src)
{
int t=head[src];
while(t!=-1)
{
if(!vis[edge[t].to])return true;
t=edge[t].next;
}
return false;
}
long long llaabs(long long num)
{
if(num<0)num=-num;
return num;
}
long long dfs(int src)
{
long long ans=weight[src],temp;
vis[src]=true;
if(chack(src))
{
int t=head[src];
while(t!=-1)
{
if(!vis[edge[t].to])
{
temp=dfs(edge[t].to);
min1=min(min1,llaabs(sum-temp-temp));
ans+=temp;
}
t=edge[t].next;
}
}
return ans;
}
int main()
{
int case1=1;
while(scanf("%d%d",&n,&m),n||m)
{
cnt=0;
int u,v;
min1=inf;
sum=0;
memset(vis,false,sizeof(vis));
memset(head,-1,sizeof(head));
for(int i=1; i<=n; i++)
{
scanf("%lld",&weight[i]);
sum+=weight[i];
}
for(int i=0; i<m; i++)
{
scanf("%d%d",&u,&v);
addedge(u,v);
}
dfs(1);
printf("Case %d: %lld\n",case1++,min1);
}
return 0;
}Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/116301.html Link to the original text :https://javaforall.cn
边栏推荐
- 字符串中数据排序
- 【奖励公示】第22期 2022年6月奖励名单公示:社区明星评选 | 新人奖 | 博客同步 | 推荐奖
- uva 12230 – Crossing Rivers(概率)「建议收藏」
- UVA 11080 – Place the Guards(二分图判定)
- Le capital - investissement est - il légal en Chine? C'est sûr?
- Intelligent software analysis platform embold
- AADL Inspector 故障树安全分析模块
- Micro service remote debug, nocalhost + rainbow micro service development second bullet
- [matrix multiplication] [noi 2012] [cogs963] random number generator
- sqlHelper的增删改查
猜你喜欢

Intelligent software analysis platform embold
MySQL约束之默认约束default与零填充约束zerofill

Codesonar Webinar
CodeSonar通过创新型静态分析增强软件可靠性

软件缺陷静态分析 CodeSonar 5.2 新版发布
![Is embedded system really safe? [how does onespin comprehensively solve the IC integrity problem for the development team]](/img/af/61b384b1b6ba46aa1a6011f8a30085.png)
Is embedded system really safe? [how does onespin comprehensively solve the IC integrity problem for the development team]

复杂因子计算优化案例:深度不平衡、买卖压力指标、波动率计算

How to meet the dual needs of security and confidentiality of medical devices?

ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your

测量楼的高度
随机推荐
UVA 11080 – Place the Guards(二分图判定)
智能软件分析平台Embold
Details of C language integer and floating-point data storage in memory (including details of original code, inverse code, complement, size end storage, etc.)
恶魔奶爸 C
Écrivez une liste de sauts
Helix QAC 2020.2新版静态测试工具,最大限度扩展了标准合规性的覆盖范围
Tensorflow2. How to run under x 1 Code of X
H3C S7000/S7500E/10500系列堆叠后BFD检测配置方法
恶魔奶爸 B3 少量泛读,完成两万词汇量+
How to meet the dual needs of security and confidentiality of medical devices?
Klocwork code static analysis tool
ISO 26262 - 基于需求测试以外的考虑因素
[function recursion] do you know all five classic examples of simple recursion?
Tensorflow2.x下如何运行1.x的代码
Network principle (1) - overview of basic principles
Mongodb learn from simple to deep
华泰证券可以做到万一佣金吗,万一开户安全嘛
CodeSonar通过创新型静态分析增强软件可靠性
Implement secondary index with Gaussian redis
恶魔奶爸 B2 突破语法,完成正统口语练习