当前位置:网站首页>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
边栏推荐
猜你喜欢
神兵利器——敏感文件发现工具
How does codesonar help UAVs find software defects?
测量楼的高度
Details of C language integer and floating-point data storage in memory (including details of original code, inverse code, complement, size end storage, etc.)
如何满足医疗设备对安全性和保密性的双重需求?
Helix QAC 2020.2新版静态测试工具,最大限度扩展了标准合规性的覆盖范围
【论文阅读】MAPS: Multi-agent Reinforcement Learning-based Portfolio Management System
Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
CodeSonar通过创新型静态分析增强软件可靠性
MySQL storage expression error
随机推荐
华泰证券可以做到万一佣金吗,万一开户安全嘛
I Basic concepts
MySQL约束之默认约束default与零填充约束zerofill
写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!
SQL注入报错注入函数图文详解
死锁的产生条件和预防处理[通俗易懂]
[award publicity] issue 22 publicity of the award list in June 2022: Community star selection | Newcomer Award | blog synchronization | recommendation Award
Klocwork 代码静态分析工具
Implement secondary index with Gaussian redis
Codesonar enhances software reliability through innovative static analysis
Helix QAC 2020.2新版静态测试工具,最大限度扩展了标准合规性的覆盖范围
Postgresql数据库character varying和character的区别说明
Écrivez une liste de sauts
智能软件分析平台Embold
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
Small guide for rapid formation of manipulator (12): inverse kinematics analysis
Tensorflow2.x下如何运行1.x的代码
最新版本的CodeSonar改进了功能安全性,支持MISRA,C ++解析和可视化
解决使用uni-app MediaError MediaError ErrorCode -5
CodeSonar如何帮助无人机查找软件缺陷?