当前位置:网站首页>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
边栏推荐
- 目前股票开户安全吗?可以直接网上开户吗。
- guava多线程,futurecallback线程调用不平均
- Dachang classic pointer written test questions
- Le capital - investissement est - il légal en Chine? C'est sûr?
- Can Huatai Securities achieve Commission in case of any accident? Is it safe to open an account
- Implement secondary index with Gaussian redis
- Measure the height of the building
- How to meet the dual needs of security and confidentiality of medical devices?
- [award publicity] issue 22 publicity of the award list in June 2022: Community star selection | Newcomer Award | blog synchronization | recommendation Award
- 权限不足
猜你喜欢

Onespin | solve the problems of hardware Trojan horse and security trust in IC Design

OneSpin | 解决IC设计中的硬件木马和安全信任问题

Intelligent software analysis platform 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.)

不落人后!简单好用的低代码开发,快速搭建智慧管理信息系统

使用枚举实现英文转盲文

Measure the height of the building
MySQL storage expression error

Cantata9.0 | new features
随机推荐
Flask1.1.4 werkzeug1.0.1 source code analysis: Routing
Codeforces 474 F. Ant colony
字符串中数据排序
不落人后!简单好用的低代码开发,快速搭建智慧管理信息系统
CodeSonar通过创新型静态分析增强软件可靠性
数值法求解最优控制问题(〇)——定义
Codesonar Webinar
特征生成
恶魔奶爸 B2 突破语法,完成正统口语练习
Is it safe to open a stock account at present? Can I open an account online directly.
Helix QAC 2020.2 new static test tool maximizes the coverage of standard compliance
Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
Nebula Importer 数据导入实践
Introduction to referer and referer policy
Implement secondary index with Gaussian redis
Micro service remote debug, nocalhost + rainbow micro service development second bullet
凌云出海记 | 赛盒&华为云:共助跨境电商行业可持续发展
Cantata9.0 | new features
CodeSonar如何帮助无人机查找软件缺陷?
Cocos2d-x 游戏存档[通俗易懂]