当前位置:网站首页>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
边栏推荐
猜你喜欢
Nebula Importer 数据导入实践
C语言 整型 和 浮点型 数据在内存中存储详解(内含原码反码补码,大小端存储等详解)
Network principle (1) - overview of basic principles
[paper reading] maps: Multi-Agent Reinforcement Learning Based Portfolio Management System
Static analysis of software defects codesonar 5.2 release
How to meet the dual needs of security and confidentiality of medical devices?
The latest version of codesonar has improved functional security and supports Misra, c++ parsing and visualization
Airiot helps the urban pipe gallery project, and smart IOT guards the lifeline of the city
CodeSonar通过创新型静态分析增强软件可靠性
Intelligent software analysis platform embold
随机推荐
Mahout-Pearson correlation的实现
Introduction to referer and referer policy
Small guide for rapid formation of manipulator (12): inverse kinematics analysis
Ubuntu安装mysql8遇到的问题以及详细安装过程
ISO 26262 - 基于需求测试以外的考虑因素
【函数递归】简单递归的5个经典例子,你都会吗?
I have to use my ID card to open an account. Is the bank card safe? I don't understand it
解决使用uni-app MediaError MediaError ErrorCode -5
部署、收回和删除解决方式—-STSADM和PowerShell「建议收藏」
Phoenix JDBC
guava多线程,futurecallback线程调用不平均
SQL注入报错注入函数图文详解
Apifox interface integrated management new artifact
使用高斯Redis实现二级索引
Apifox 接口一体化管理新神器
华为CE交换机下载文件FTP步骤
FTP steps for downloading files from Huawei CE switches
如何满足医疗设备对安全性和保密性的双重需求?
Helix QAC 2020.2新版静态测试工具,最大限度扩展了标准合规性的覆盖范围
Update iteration summary of target detection based on deep learning (continuous update ing)