⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5.cpp

📁 一次比赛的代码,有五道题,2,4比较基础,3题是模拟,1高精度,5树状dp
💻 CPP
字号:
#include <iostream>
using namespace std;
int max(int a,int b)
{ 
	if(a>b)
		return a;
	else return b;
}
int n;
int Max=0;
bool  map[1600][1600];//储存点与点的连通情况
int p[1600];	      //存放点的权值
int dp(int mf,int mn)//mf到点mn
{
        int re=p[mn];
        for(int i=0 ; i < n ; i++)
        {
			if(map[mn][i] == 1)
			{int next = i;
            if(mf==next)  continue;
            int dp_now = dp(mn,next);
            if(dp_now>0)
                re += dp_now;
		}
}
		Max=max(Max, re);//取最大值 ;
        return re;
    }
 void main() 
{
	freopen("cut.in","r",stdin);
	freopen("cut.out","w",stdout);
	memset(map,0,sizeof(map));
	cin>>n;
	for( int i = 0 ; i < n; i ++)//读入点的权值
	{	int temp;
		cin>>temp;
		p[i] = temp;
	}
	for( i=0;i<n-1;i++)//读入点与点的连通情况;
	{
			int x,y;
			cin>>x>>y;
			map[x-1][y-1] = 1;
			map[y-1][x-1] = 1 ;
	}
      dp(0,1);//dp搜图;
      cout<<Max<<endl;//输出最大
}
    
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -