20分求助
查看原帖
20分求助
753241
ge_yiyang_001_DT楼主2024/3/23 17:01
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+7;
vector<int>a[maxn];
int t[maxn],r[maxn],rd[maxn];
queue<int>p,q;
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		int id;
		cin>>id;
		cin>>t[id];
		int x;
		cin>>x;
		while(x!=0){
			a[x].push_back(id);
			rd[id]++;
			cin>>x;
		}
	}
	q.push(1);
	while(!q.empty()){
		int now=q.front();
		q.pop();
		r[now]+=t[now];
		for(int i=0;i<a[now].size();i++){
			int to=a[now][i];
			rd[to]--;
			if(rd[to]==0){
				r[to]=max(r[to],r[now]);
				q.push(to);
			}
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++)ans=max(ans,r[i]);
	cout<<ans<<endl;
	return 0;
}
2024/3/23 17:01
加载中...