#include <iostream>
#include <vector>
#include <queue>
using namespace std;
vector<int> list[10006];
int vis[10006],time2[10006],time1[10006],ans=0;
queue<int> Q;
int main() {
int n;
cin >> n;
for (int k = 1; k <= n; k++) {
int bianhao, time, befor;
cin >> bianhao >> time;
time1[bianhao]=time;
time2[bianhao]=time;
ans=max(ans,time);
for (cin >> befor; befor > 0; cin >> befor) {
list[befor].push_back(bianhao);
vis[bianhao]++;
}
}
for (int k = 1; k <= n; k++) {
if (vis[k] == 0) {
Q.push(k);
}
}
while (!Q.empty()) {
int node = Q.front();
Q.pop();
//cout << node << " ";
for (int i:list[node]) {
vis[i]--;
time2[i]=max(time1[i]+time2[node],time2[i]);
//cout<<i<<"*"<<time2[i]<<" ";
ans=max(time2[i],ans);
if (vis[i] == 0) {
Q.push(i);
}
}
//cout<<endl;
}
cout<<ans;
return 0;
}
全部回复 共 0 条
还没有人回复。往下写第一条。
发表回复
登录后即可回复本帖,与出题人和同学一起讨论。
登录