#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll inf = 1e18;
const int N = 1e4 + 7;
vector<int>e[N];
int ti[N], len[N], Max = 0;//Max记录最长时间
bool v[N] = {};//记录入度
void dfs(int x, int tm){
if(tm <= ti[x])return ;
printf("node %d\n", x);
ti[x] = tm, Max = max(Max, tm);
for(auto i : e[x]){
dfs(i, tm + len[i]);
}
}
int main(){
int n;
scanf("%d", &n);
memset(v, 0, sizeof v);
while(n--){
int Cin = 0, d;
scanf("%d", &d);
scanf("%d", &len[d]);
while(scanf("%d", &Cin) != EOF){
if(!Cin)break;
e[Cin].push_back(d);//邻接表存图
v[d] = 1;//入度
}
}
for(int i = 1; i <= n; i++){
if(!v[i])dfs(i, len[i]);//选没有入边的点作为起点
}
printf("%d\n", Max);
return 0;
}
首先输入好像就不对劲,但是不会改,球球帮忙