相连的边--树

相连的边--树_第1张图片

相连的边--树_第2张图片

1.60%版本--两种情况,星型和链型,用dfs做的,超时

#include
using namespace std;
#define N 100011
typedef  long long ll;
typedef pair pii;
int n,k,m,q;
typedef struct edge
{
	int v;ll w;
}edge;
vector mp[2*N];
ll sum;
bool bo[2*N];
ll ss;
void dfs(int u,int s)
{
	if(s==4)
	{
		sum=max(sum,ss);
	}
	if(s>4) return;
	if(!mp[u].size()) return;
	for(int i=0;i>n;
	for(int i=2;i<=n;i++)
	{
		int v;ll w;
		cin>>v>>w;
		mp[i].push_back({v,w});
		mp[v].push_back({i,w});
	}
	for(int i=1;i<=n;i++)///星型 
	{
		if(mp[i].size()>=3)
		{	vector an;
			for(int j=0;j());
		    sum=max(sum,an[0]+an[1]+an[2]);
		}	
	}
	//cout<<-1;
	for(int i=1;i<=n;i++)///链型 
	{
		for(int j=1;j<=n;j++) bo[j]=false;
		ss=0;
		bo[i]=true;
		dfs(i,1);
	}
	cout<

你可能感兴趣的:(深度优先,算法,图论)