50pts求助(wa on#5#6#7#8#10)
查看原帖
50pts求助(wa on#5#6#7#8#10)
824868
Sunset_afterglow楼主2024/8/13 20:07
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,v,w,len,maxx=LLONG_MIN,ans;
vector<pair<int,int> >a[20010];
void dfs(int u,int from,int sum){
	for(auto i:a[u]){
		if(i.first==from)continue;
		if(i.second>=sum){
			++ans;
			sum=len;
			break;
		}
	}
	for(auto i:a[u]){
		if(i.first==from)continue;
		dfs(i.first,u,sum-i.second);
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>k;
		for(int j=1;j<=k;++j){
			cin>>v>>w;
			a[i].push_back(make_pair(v,w));
			maxx=max(maxx,w);
		}
	}
	cin>>len;
	if(len<=maxx){
		cout<<"No solution.";
		return 0;
	}
	dfs(1,1,len);
	cout<<ans;
	return 0;
}
2024/8/13 20:07
加载中...