疑问(非本题库)
  • 板块学术版
  • 楼主_Niaoniao_
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/7/8 11:16
  • 上次更新2023/11/4 18:25:48
查看原帖
疑问(非本题库)
528562
_Niaoniao_楼主2021/7/8 11:16

#include<bits/stdc++.h>
using namespace std;
int T;
struct A {
	int a,b,far;
};
int n,q,sum,k;
A sx[10000];
bool ax[10001];
void dfs(int now,int ans) {
	if(k==1||ax[now]==true) {
		return;
	}
	if(sum==0) {
		if(ans>sum) {
			sum=ans;
		}
		k=1;
		return;
	}
	ax[now]=true;
	for(int i=1; i<n; i++) {
		if(sx[i].a==now) {
			dfs(sx[i].b,ans+sx[i].far);
		}
		if(sx[i].b==now) {
			dfs(sx[i].a,ans+sx[i].far);
		}
	}
	ax[now]=false;
}
int main() {
	cin>>T;
	while(T>0) {
		T--;
		k=0;
		n=0,q=0;
		memset(sx,0,sizeof(sx));
		cin>>n;
		for(int i=1; i<n; i++) {
			cin>>sx[i].a>>sx[i].b>>sx[i].far;
		}
		cin>>q;
		for(int i=1; i<=q; i++) {
			int kkksc03;
			memset(ax,false,sizeof(ax));
			sum=0;
			cin>>kkksc03;
			dfs(kkksc03,0);
			cout<<sum;
		}
	}
	return 0;
}
2021/7/8 11:16
加载中...